我的项目中的每个控制器类都来自一个基本控制器类,该控制器类正确地命名为BaseController。使BaseViewData类成为BaseController类的属性是一个坏主意?
所有视图数据都包含在名为BaseViewData的类中(它将来可能成为更具体的视图数据类的基础控制器)。
我在BaseController上创建了一个BaseViewData属性,因为每个控制器都需要访问强类型的基本视图数据中的数据(并且BaseController执行一些预填充某些BaseViewData属性的工作)。
我这样做是因为:
如果我更改的属性,我 会得到编译时错误 检查的详细 解决断码快。
执业干的,我已经 设法巩固代码 以前分散在整个 每个控制器了很多东西。
但是,这是我第一次尝试这样做。所以我可以忽略一个准备放弃丑陋头脑的问题。所以:
是否让BaseViewData类成为BaseController类的一个属性是一个坏主意?如果是这样,为什么?
更新1:
我BaseController看起来像(还有更多,但这应该传达出点):
public class BaseController
{
public string Language {get; set;}
public string Locale {get; set;}
public BaseViewData Data {get; set;}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
var l = (RouteData.Values["language"] != null) ? RouteData.Values["language"].ToString() : "en";
if (l.ToLower().Contains("en"))
{
l = "en";
}
else
l = "ja";
Data.Language = l;
}
}
我BaseViewData看起来是这样的(同样,还有更多.. ):
public class BaseViewData
{
public string Language {get;set;}
public string Locale {get;set;}
public bool IsOwner {get;set;}
public string Menu1 {get;set;}
public string Menu2 {get;set;}
public string Menu3 {get;set;}
public IPagedList<TYPE> ListOfTYPE {get;set;}
etc...
}
有趣的想法。我可能会使用一个带有BaseController的IViewData。我认为我的IViewData只是一个共享的DTO,没有这样的功能:UserId,UserName和IsLoggedIn或者其他东西......我很想看看你的BaseViewData中有什么。 – rball 2009-12-17 22:53:44