我项目中的每个控制器类都派生自一个基本控制器类,恰当地命名为 BaseController。
所有视图数据都包含在一个名为 BaseViewData 的类中(将来可能成为更具体的视图数据类的基本控制器)。
我在 BaseController 上创建了一个 BaseViewData 属性,因为每个控制器都需要访问强类型基本视图数据中的数据(并且 BaseController 做了一些工作来预填充一些 BaseViewData 属性)。
我这样做是因为:
如果我改变了一个属性,我会得到编译时错误检查,以更快地解决损坏的代码。
通过练习 DRY,我设法整合了以前分散在每个控制器中的大量代码。
然而,这是我第一次尝试这样做。所以我可能会忽略一个准备抬起丑陋脑袋的问题。所以:
将 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...
}