gpt4 book ai didi

c# - 带有使用 MVC 1.0 的 Controller 的 ASP.Net MVC ViewUserControl

转载 作者:行者123 更新时间:2023-11-30 12:37:33 24 4
gpt4 key购买 nike

由于所有预览版本和一个正式版本中关于 mvc 的所有信息之间的混淆,我对如何处理 viewusercontrols 感到非常困惑。所以一劳永逸地告诉我如何实现这个例子:

我有一个即将发生的事件列表,需要显示在我网站的多个页面上。因此,我在我的 Views\Shared 文件夹中放置了一个新的 ViewUserControl (ListEvents.ascx)。

我请求此 ListEvents.ascx 像这样呈现在我的主页/索引 View 上:

<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>

但这似乎不是一件很聪明的事情,从 View 内部创建一个新模型?!还是我在这里错了?我什至不能传递任何验证状态,因此不能传递 null 参数。因此,另一种选择是将此数据存储到 ViewData[] 成员中,但我的 viewusercontrol 不应依赖于其父级的 ViewData!

我确信这个问题有一个非常简单的答案,请分享,因为我已浏览完该问题的网页。

谢谢!

简单回答:viewusercontrol 应该总是从它所在的 View 接收它的模型。解决此问题(例如将代码隐藏文件添加到 viewusercontrol)会破坏 MVC 模式。

最佳答案

默认情况下,将使用与页面相同的模型。如果您想为 RenderPartial 的每个实例提供一个模型,您的情况可能就像在博客应用程序中呈现多个条目一样。您可以从页面模型中的集合中获取每个模型并将其传递给用户控件,如下所示:

foreach (var post in Model.Entries) {
Html.RenderPartial("PostTemplate", post);
}

关于c# - 带有使用 MVC 1.0 的 Controller 的 ASP.Net MVC ViewUserControl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/714939/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com