1)ViewBag
ViewBag是動態類型,使用時直接添加屬性賦值即可 ViewBag.myName
控制器代碼:
1 public ActionResult Index() 2 { 3 ViewBag.name = "梁順盛"; 4 ViewBag.message = "歡迎使用MVC設計模式~~"; 5 return View(); 6 }
視圖代碼:
<div>
<!--利用HtmlHelper創建TextBox時,使用名稱與ViewBag中的Key一致, 就會自動實現值綁定-->
@Html.TextBox("name")
@ViewBag.message
</div>
2)ViewData
ViewData只對當前Action有效,它是一個字典集合,通過key值讀取對應的value;
控制器代碼:
public ActionResult Index() { ViewData["name"] = "梁順盛"; ViewData["message"] = "歡迎使用MVC設計模式~~"; return View(); }
視圖代碼:
<div>
<!--利用HtmlHelper創建TextBox時,使用名稱與ViewData中的Key一致, 就會自動實現值綁定-->
@Html.TextBox("name")
@ViewData["message"]
</div>
3)TempData
使用TempData和使用ViewData方法是一樣的,但是它可用於在不同的Action之間傳值,這是ViewData做不到的。
控制器代碼:
public class MVCController : Controller { public ActionResult Index1() { TempData["name"] = "梁順盛"; return View(); } public ActionResult Index2() { string strName = TempData["name"].ToString() return View(); }
上面的代碼中,Index()給TempData添加了一個鍵值對,假設我們先請求Index這個Action,接着請求Index2這個Action,那么在Index2中,我們便可以得到之前添加到TempData的鍵值對。有趣的是,這時如果再次請求Index2,那么從TempData中讀到的MyName的值會是null。這是因為TempData和一個臨時的Session差不多,當Acion執行的時候它做為一個全局對象保存的內存中,而一旦Action的執行完成,就會釋放內存空間,這就是它與ViewData最大的不同之處。
4)Model
Controller通過Model傳值應該是MVC中使用最為普遍的一種傳值方式,通過強類型綁定,在View中可以很方便的通過Model的相應屬性得到想要的值。
Model代碼:
public partial class YzAdministratorEntity { public YzAdministratorEntity() { this.YzClearRecordEntity = new HashSet<YzClearRecordEntity>(); this.YzNotifyInfoEntity = new HashSet<YzNotifyInfoEntity>(); } public System.Guid ID { get; set; } public string AdminPassword { get; set; } public string AdminName { get; set; } public bool isUsed { get; set; } [Required(AllowEmptyStrings = false, ErrorMessage = "用戶ID不能為空")] public string AdministratorID { get; set; } public string AdminLevel { get; set; } public virtual ICollection<YzClearRecordEntity> YzClearRecordEntity { get; set; } public virtual ICollection<YzNotifyInfoEntity> YzNotifyInfoEntity { get; set; } }
視圖代碼:
強類型綁定:
@model Model.YzAdministratorEntity
通過Linq自動匹配Model和Label或TxtBox的屬性值:
<div> <span class="editor-label"> @Html.Label("編號:") </span> <span class="editor-field"> @Html.EditorFor(a => a.AdministratorID) @Html.ValidationMessageFor(model => model.AdministratorID) </span> </div> <div> <span class="editor-label"> @Html.Label("密碼:") </span> <span class="editor-field"> @Html.EditorFor(a => a.AdminPassword ) </span> </div> <div> <span class="editor-label"> @Html.Label("真實姓名:") </span> <span class="editor-field"> @Html.EditorFor(a => a.AdminName ) </span> </div>
