在我的ASP.NET MVC网站的几乎每个页面中,我都在使用有关用户的信息。这通常会在模型中提取有关他们工作的公司的信息以传递给视图,或者在视图中提供用户可以使用其权限查看页面的哪些部分。
有没有一种方法可以让用户数据随时可用,而不是在每个模型中都有用户?即我应该设置一个基本模型,还是有一些“主”控制器让用户通过ViewData?
任何想法,甚至更好的任何代码将不胜感激。
答案 0 :(得分:4)
这是个好主意。我在所有MVC项目中都使用了MasterModel。
为此,您需要子类化所有视图模型,并强烈键入MasterPage到MasterModel。
public class MasterModel
{
string UserName { get; set; }
}
public class HomeModel : MasterModel
{
}
public class NewsModel : MasterModel
{
}
<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<MasterModel>" %>
User name: <%= Model.UserName %>
答案 1 :(得分:0)
只要你不重新发明轮子,这是一个好主意。人们经常在视图模型中放置的相当多的信息(特别是在这里,ASP.NET用户,但人们似乎也经常复制路由数据)已经可用于视图而无需将其添加到模型中。但对于那些尚未出现在视野中的事情,这很好。