Mat*_*ieu 4 asp.net-mvc viewmodel
我正在asp.net MVC中创建一个新网站,其动态菜单会根据用户的不同而变化.但那还不是全部.我根据用户使用2种不同的布局(Razor布局),2种不同的布局有不同的菜单.所以我有2个不同的布局和2个不同的动态菜单.
我想对2个布局使用相同的视图,每个视图有一个viewmodel.我使用动作过滤器来确定布局.设计一个"ViewModel"基类是一个好主意,它包含显示两个菜单的数据(即使每次只创建一个菜单),并为我的所有viewmodel创建这个基类的子类(每个视图一个viewmodel).
我想知道这是不是一个好习惯.是否应该使用2个视图(每个布局一个)并使用部分视图作为公共部分?
如果根据布局我希望在视图上显示的内容存在一些差异,我应该使用2个视图而不是一个吗?
任何建议?
在我看来,最好的做法是为你的视图创建一个视图模型,其上的属性包含一些确定动态菜单形成方式的对象.例:
public class MyViewModel
{
public int SomeData { get; set; } // basic Stuff
public IDynamicMenuData MenuData { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
您可以根据要为该用户呈现的菜单将动态菜单数据的实现分配给视图模型.然后,在您的视图中,您可以调用:
@Html.DisplayFor(x => x.MenuData)
Run Code Online (Sandbox Code Playgroud)
您想要动态菜单的位置.然后,您可以为每种类型的IDynamicMenuData实现创建显示模板,并相应地进行渲染.然后,您只需要一个视图,一个视图模型,并且您可以拥有X个动态菜单的实现.
| 归档时间: |
|
| 查看次数: |
3962 次 |
| 最近记录: |