我的网站中有一部分需要用于导航下拉菜单的全局数据,现在我正在属性中执行以下操作:

ViewData["projects"] = new[]
{
    new ProjectNav { Id = 1, Name = "Big project in New York" },
    new ProjectNav { Id = 2, Name = "Small project in New Jersey" },
    new ProjectNav { Id = 3, Name = "Big project in Florida" },
}


然后,我标记这样的控制器方法:

[ProjectNav]
public ActionResult Index()
{
     // strongly typed view returned here
}


在我看来,我会这样做:

<% foreach (ProjectNav project in (IEnumerable<ProjectNav>)ViewData["projects"])
{ %>
// Enumerate here
<% } %>


这行得通,但是有没有办法以更强类型的方式做到这一点?我唯一能想到的就是用ProjectNav成员作为成员创建一个Dto,但是随后您要为每种控制器方法创建一个单独的Dto,这绝对不是DRY。有什么更好的方法可以解决我所缺少的吗?

最佳答案

有一个NavigationController,并在每个视图(或母版页)中使用RenderAction或RenderPartial。

08-19 03:23