在ASP.NET MVC中拥有基本模型是一个好主意还是坏主意

时间:2009-08-31 14:16:51

标签: asp.net-mvc

在我的ASP.NET MVC网站的几乎每个页面中,我都在使用有关用户的信息。这通常会在模型中提取有关他们工作的公司的信息以传递给视图,或者在视图中提供用户可以使用其权限查看页面的哪些部分。

有没有一种方法可以让用户数据随时可用,而不是在每个模型中都有用户?即我应该设置一个基本模型,还是有一些“主”控制器让用户通过ViewData?

任何想法,甚至更好的任何代码将不胜感激。

2 个答案:

答案 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用户,但人们似乎也经常复制路由数据)已经可用于视图而无需将其添加到模型中。但对于那些尚未出现在视野中的事情,这很好。