我的操作会创建一个强类型的视图数据,并将其传递给我的视图。
在视图中,我将Model传递给render partial方法。
public ActionResult Index()
{
ViewDataForIndex vd = new ViewDataForIndex();
vd.Users = Users.GetAll();
return View(vd);
}
public class ViewDataForIndex: ViewData
{
public IList<User> Users {get;set;}
}
现在在视图中:
<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<ViewDataForIndex>" %>
<% Html.RenderPartial("~/controls/blah.ascx", ViewData.Model); %>
和blah.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
答案 0 :(得分:0)
一:在ascx内部:
<%= Model.YourProperty %>
二:为ViewUserControl提供类型参数:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
答案 1 :(得分:0)
我更喜欢@jfar的第二种方法,因为如果您决定将更复杂的模型传递给视图,它可以更容易地进行修改。
因此,您可以传递具有多个属性和/或更多子对象的类。
如果您现在继承该对象,那么您需要做的就是从复杂对象继承并更改一段代码,以及添加新属性和完成。
答案 2 :(得分:0)
更具体地说是jfar的回答:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewDataForIndex>" %>
如果您的父网页包含ViewDataForIndex
类型的模型,则调用具有相同ViewData.Model
的子网格也会传递ViewDataForIndex
类型的对象。