我在 asp.net MVC 中创建了一个新网站,其中包含一个根据用户而变化的动态菜单。但这还不是全部。我根据用户使用 2 种不同的布局(Razor 布局),并且 2 种不同的布局有不同的菜单。所以我有 2 个不同的布局和 2 个不同的动态菜单。
我想对 2 个布局使用相同的 View ,每个 View 一个 View 模型。我使用 Action 过滤器来确定布局。设计一个包含数据的“ViewModel”基类来显示两个菜单(即使每次只创建一个菜单)并为我的所有 View 模型创建这个基类的子类(每个 View 一个 View 模型)是一个好主意。
我想知道这是否是一个好习惯。是否应该使用 2 个 View (每个布局一个)并为公共(public)部分使用部分 View ?
如果我想根据布局在 View 上显示的内容存在一些差异,我应该使用 2 Views 而不是一个 Views 吗?
有什么建议吗?
最佳答案
在我看来,最好的做法是为您的 View 提供一个 View 模型,其上的属性包含一些确定动态菜单如何形成的对象。例子:
public class MyViewModel
{
public int SomeData { get; set; } // basic Stuff
public IDynamicMenuData MenuData { get; set; }
}
根据要为该用户呈现的菜单,您可以将动态菜单数据的实现分配给 View 模型。然后,在您看来,您可以调用:
@Html.DisplayFor(x => x.MenuData)
您想要动态菜单的位置。然后,您可以为每种类型的 IDynamicMenuData 实现创建一个显示模板,它将相应地呈现。然后,您只需要一个 View 、一个 View 模型,并且您可以拥有 X 个动态菜单的实现。
关于asp.net-mvc - Viewmodel 和动态菜单最佳实践 - ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5410486/