我想在我的主页上动态创建我的菜单,我已经看到了两种不同的方法:
-
第一种方法是有一个基本控制器,在它的构造函数中加载所有共享视图模型数据。
-
第二种方法是为此创建一个单独的控制器,并在母版页中使用它来将特定的视图片段注入母版页,而不会污染常规的页面视图生成:
@Html.Action("Index", "Settings")
一个比另一个好吗?这里有什么最佳实践吗?
我个人更喜欢第二种方法,因为它允许独立于主逻辑处理菜单。通过使用子操作,你可以有一个完全独立的菜单控制器生命周期,而不需要为使用这个母版的所有视图都有一个基本视图模型。继承似乎不适合这种情况,但当然这并不意味着你应该完全排除它。每个场景都是特定的,并且取决于确切的细节(您还没有为您的场景提供这些细节),可能有不同的方法。
只是不要认为如果Html.Action
对一个场景是好的,那么它对所有场景都是好的。可能会有一些项目特定的限制,这可能是不合适的,或者可以通过其他方法实现。