asp.net-mvc-2 - ASP.NET MVC,部分 View 和数据

标签 asp.net-mvc-2 dynamic-data

谁能详细说明为什么要在每个 Action (例如动态菜单)上定义ViewData [“MenuData”]?

我有一个呈现菜单的简单局部 View ,我从母版页中呈现此菜单。这是我从ASP.NET WebForms传来的直观信息,但是填充菜单的唯一方法是传递ViewData [“MenuData”],但是然后我必须在每个 Controller 操作中都执行此操作。确实有点愚蠢,我每次都必须定义此 View 数据。

在可测试性和什么是ASP.NET MVC方面,我应该如何处理?

最佳答案

另一种选择是改用 RenderAction 方法,该方法将调用一个操作(在当前 Controller 上,或者如果您还提供 Controller 名称,则在该 Controller 上),然后可以为您构建菜单数据,并调用ascx部分看法:

因此,在我的母版页上,我可以拥有:

<% Html.RenderAction("MenuArchiveList"); %>

然后在我的 Controller 中:
public ActionResult MenuArchiveList() {
  return PartialView("BlogArchiveList",
                     _BlogRepository.GetArchiveYearPostCounts());
}

然后,这将成功找到用户控件\Views\Shared\BlogArchiveList.ascx
如果要确保仅在局部 View 的上下文中调用操作,则应使用ChildActionOnlyAttribute装饰它。

它是从“ future ”命名空间Microsoft.Web.Mvc中添加到System.Web.Mvc的版本2中的。

关于asp.net-mvc-2 - ASP.NET MVC,部分 View 和数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3109303/

相关文章:

c# - MVC + 我如何在 Controller 操作之前提醒提示用户

asp.net - 将 View 模型从 ajax 发送到 Controller

mysql - 带有动态字段的 SQL

opengl - OpenGL 中的动态 VBO

asp.net - 在下拉列表中添加 "Select"项

javascript - 如何使用 JavaScript 从页面获取具有特定类的动态加载的 HTML 标签?

javascript - 如何在 Html.TextBoxFor 方法中为 javascript 添加单引号?

asp.net-mvc - DotNetOpenAuth 和 Facebook

jquery - jqGrid saveRow 带有错误函数

dynamic-data - 从 IReactiveDerivedList 移动到 DynamicData