一、首先是单个model数据的传递
1、首先创建一个在Models里面创建一个ProductModels,
代码如下:
using System; using System.Collections.Generic; using System.Web; using mvc.Models; namespace mvc.Models { #region 模型 public class ProductModel { public string p_id { get; set; } public string p_name { get; set; } public string p_details { get; set; } } #endregion }
2、然后在ProductController中把数据返回到View
namespace mvc.Controllers { public class ProductController : Controller { // // GET: /Product/ public ActionResult Index() { ProductModel p = new ProductModel(); p.p_id = "id1"; p.p_name = "name1"; return View(p); } } }
3、创建,view页面,并指定model,创建强类型视图,如果“视图数据类型”中找不到刚才创建的“ProductModel”,需要先编译一下项目:选中项目名称,点击右键,选择“生成”,然后就可以在找到了。
Product/Index.apsx页面代码如下:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/HasNav.Master" Inherits="System.Web.Mvc.ViewPage<mvc.Models.ProductModel>" %> <asp:Content ID="p_title" ContentPlaceHolderID="TitleContent" runat="server"> 产品展示 </asp:Content> <asp:Content ID="Content1" ContentPlaceHolderID="MainLeft" runat="server"> <%=model.c_id %> </asp:Content>
因为viewpage的model为ProductModel,所以在下面使用Model时,Model即为ProductModel,所以可以直接调用ProductModel的get方法,获取属性。
二、如果要像view传递list,则在controller中创建一个List,代码如下:
// GET: /Product/ public ActionResult Index() { List<ProductModel> pList = new List<ProductModel>(); ProductModel p = new ProductModel(); p.p_id = "id"; pList.Add(p); return View(pList); }
view代码如下:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/HasNav.Master" Inherits="System.Web.Mvc.ViewPage<List<mvc.Models.ProductModel>>" %> <asp:Content ID="p_title" ContentPlaceHolderID="TitleContent" runat="server"> 产品展示 </asp:Content> <asp:Content ID="p_main" ContentPlaceHolderID="MainRight" runat="server"> <div class="p_list"> </div> <% foreach (var product in Model) { %> <h3><%= Html.ActionLink(product.p_name, "Details", new { id = product.p_id }, new { target = "_blank" })%></h3> <% } %> </asp:Content>
因为此时View的类型为List<mvc.Models.ProductModel>,所以,在下面使用Model时,Model为一个product的list集合,遍历输出即可
三、如果想要在一个View中使用多个Model,那我们需要在定义一个Model,代码如下:
public class ProductViewModel { public List<CategoryModel> cList { get; set; } public List<ProductModel> pList { get; set; } }
然后view层代码如下:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/HasNav.Master" Inherits="System.Web.Mvc.ViewPage<mvc.Models.ProductViewModel>" %> <asp:Content ID="p_header" runat="server" ContentPlaceHolderID="cphHead"> <link href="../../Content/Product.css" rel="stylesheet" type="text/css" /> </asp:Content> <asp:Content ID="p_title" ContentPlaceHolderID="TitleContent" runat="server"> 产品展示 </asp:Content> <asp:Content ID="Content1" ContentPlaceHolderID="MainLeft" runat="server"> <% foreach (var category in Model.cList) { %> <h3><%= Html.ActionLink(category.c_name, "Details", new { id = category.c_id }, new { target = "_blank" })%></h3> <% } %> </asp:Content> <asp:Content ID="p_main" ContentPlaceHolderID="MainRight" runat="server"> <div class="p_list"> </div> <% foreach (var product in Model.pList) { %> <h3><%= Html.ActionLink(product.p_name, "Details", new { id = product.p_id }, new { target = "_blank" })%></h3> <% } %> </asp:Content>
view使用mvc.Models.ProductViewModel,所以调用ProductViewModel的get方法得到对应的List,然后遍历输出即可