加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – Viewmodel和动态菜单最佳实践 – ASP.NET MVC

发布时间:2020-12-16 07:22:31 所属栏目:asp.Net 来源:网络整理
导读:我正在asp.net MVC中创建一个新网站,其动态菜单会根据用户的不同而变化.但那还不是全部.我根据用户使用2种不同的布局(Razor布局),2种不同的布局有不同的菜单.所以我有2个不同的布局和2个不同的动态菜单. 我想对2个布局使用相同的视图,每个视图有一个viewmode
我正在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; }
}

您可以根据要为该用户呈现的菜单将动态菜单数据的实现分配给视图模型.然后,在您的视图中,您可以调用:

@Html.DisplayFor(x => x.MenuData)

您想要动态菜单的位置.然后,您可以为每种类型的IDynamicMenuData实现创建显示模板,并相应地进行渲染.然后,您只需要一个视图,一个视图模型,并且您可以拥有X个动态菜单的实现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读