MVC:控制器与视图之间的值传递

前言

  在传统asp.net webform程序中,进行值传递的对象有:ViewState,Cookie,Application,Session等等。其中使用得最为频繁的,肯定是ViewState,只有回传信息都会有ViewState。而在asp.net MVC中是没有ViewState的,那么是如何传值的呢?

 

三种传值方法

  ViewData:针对单一页面(用于一个方法中)进行值传递,跟WebForm中的ViewState在些神似

      使用:  this.ViewData["ViewDataTest"] = "ViewData测试";

  调用: <%:Html.Encode(ViewData["ViewDataTest"]) %>

 

      TempData:TempData是跨页面传输的,可在多个页面中设置使用。存于Session中,在每次执行请求中,控制器每次从Session中 

        取出一次TempData,然后删除该Session。

   使用: this.ViewData["ViewDataTest"] = "ViewData测试";

   调用(多个页面): <%:Html.Encode(ViewData["ViewDataTest"]) %>

 

       Model: 强类型数据方便检查错误。

   使用:<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage>" %>

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage>" %> ModelTranferData

<%: Html.ActionLink("Create New", "Create") %>

<% foreach (var item in Model) { %> <% } %>
CompanyName ContactName ContactTitle Address City Region PostalCode Country Phone Fax
<%: Html.ActionLink("Edit", "Edit", new { id=item.CustomerID }) %> | <%: Html.ActionLink("Details", "Details", new { id=item.CustomerID }) %> | <%: Html.ActionLink("Delete", "Delete", new { id=item.CustomerID }) %> <%: item.CompanyName %> <%: item.ContactName %> <%: item.ContactTitle %> <%: item.Address %> <%: item.City %> <%: item.Region %> <%: item.PostalCode %> <%: item.Country %> <%: item.Phone %> <%: item.Fax %>

 

注意:IEnumerable>"  类型为:IEnumerable,才能使用foreach

 

扩展:传递多个model:可这样声明一个新model

          ///

/// 传递多个model:可这样包装一个新model /// public class MultiplyModel { public MultiplyModel() { TestModelDataContext testModelDataContext = new TestModelDataContext(); CustomerList = testModelDataContext.Customers; EmployeeList = testModelDataContext.Employees; } public IEnumerable CustomerList { get; set; } public IEnumerable EmployeeList { get; set; } }

你可能感兴趣的:(MVC)