试图将Model传递给partial,我该怎么做?

时间:2009-12-15 23:24:09

标签: asp.net-mvc renderpartial

我的操作会创建一个强类型的视图数据,并将其传递给我的视图。

在视图中,我将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" %>
  1. 我现在如何访问我的模型?
  2. 如果我想为我的ViewUserControl创建一个强类型类,我该怎么做?继承自?

3 个答案:

答案 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类型的对象。