因为之间的所有信息的混乱就在那里大约从所有的预览版的MVC和一个正式发布的

我很困惑如何应对viewusercontrols。 所以,一劳永逸,告诉我如何实现这个例子:

我需要在我的网站的几个页面将显示即将发生的事件的列表。因此,我已换上新ViewUserControl(ListEvents.ascx)我的视图\共享文件夹内。

我请求这个ListEvents.ascx上呈现这样我的家庭/索引视图:

<p>
    Here's a list of events:
    <% Html.RenderPartial("ListEvents");%>
</p>

我将如何去通过我的模型,这个viewusercontrol?我知道我可以做到这一点:

<p>
    Here's a list of events:
    <% Html.RenderPartial("ListEvents", (new Model.Services.EventService(null)).ListEvents());%>
</p>

但是,这似乎是一个很聪明的做法不对,创建从视图中的新模式?还是我错在这里?我甚至不能传递任何validationstate,因此空参数。 因此,另一种选择是将存储这些数据到计算机[]成员,但我viewusercontrol不应该依赖于ViewData的的它的父!

我敢肯定有一个很简单的答案,请分享,因为我做了浏览网页的这个问题。

谢谢!

<强>简单应答: 一个viewusercontrol应始终得到它从它所在的视图模型。通过将代码隐藏文件以一个viewusercontrol解决此工作,例如,将打破MVC模式。

有帮助吗?

解决方案

默认情况下,同样的模型作为页面将被使用。如果你想提供一个模型来RenderPartial的每个实例,你的情况可能是像博客应用程序呈现几个条目。你可以在你的页面模型获取从集合每个模型并将它传递给这样的用户控件:

foreach (var post in Model.Entries) {
  Html.RenderPartial("PostTemplate", post);
}
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top