0

我的操作创建了一个强类型的视图数据,它被传递给我的视图。

在视图中,我将模型传递给渲染部分方法。

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 创建一个强类型类,我该怎么做?继承自?
4

3 回答 3

0

我更喜欢@jfar 的第二种方法,因为如果您决定将更复杂的模型传递给视图,它可以更轻松地进行修改。

因此,您可以传递一个具有多个属性和/或更多子对象的类。

如果您现在从对象继承,那么您需要做的就是从复杂对象继承并更改一段代码,以及添加新属性,然后您就完成了。

于 2009-12-15T23:59:31.090 回答
0

一:ascx里面:

   <%= Model.YourProperty %>

二:给ViewUserControl提供一个类型参数:

   <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
于 2009-12-15T23:32:29.163 回答
0

更具体地说,对于 jfar 的回答:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ViewDataForIndex>" %>

如果您的父页面有一个类型的模型ViewDataForIndex,那么调用具有相同类型的子页面ViewData.Model也会传递一个类型的对象ViewDataForIndex

于 2009-12-16T00:03:06.997 回答