Каждый класс контроллера в моем проекте определяется базовым классом контроллера, точно названным BaseController.Является ли класс BaseViewData свойством класса BaseController плохой идеей?
Все данные обзора содержатся в классе с именем BaseViewData (который в будущем может стать базовым контроллером для более конкретных классов данных представления).
Я создал свойство BaseViewData на BaseController, так как каждый контроллер требует доступа к данным внутри строго типизированных данных базового представления (и BaseController выполняет некоторую работу по предварительному заполнению некоторых свойств BaseViewData).
Я сделал это потому, что:
Если я когда-либо изменил свойство, я бы получить ошибку компиляции время проверки, чтобы решить сломанных код более быстро.
придерживаюсь DRY, я удалось консолидировать ALOT кода , который ранее был рассеянной в течение каждого контроллера.
Однако в первый раз я попытался это сделать. Поэтому я мог бы забыть о проблеме, готовившей вывести свою уродливую голову. Итак:
Является ли класс BaseViewData свойством класса BaseController плохой идеей? Если да, то почему?
Update 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...
}
Интересная идея. Я мог бы использовать IViewData сам с BaseController. Я бы подумал, что мой IViewData будет просто общим DTO без каких-либо функций, таких как: UserId, UserName и IsLoggedIn или что-то в этом роде. Мне было бы интересно узнать, что у вас есть в BaseViewData. – rball