Я бы создал BaseController
, который извлекает данные в переопределении Initialize()
и устанавливает для него свойство ViewBag
.Теперь выведите каждый контроллер, который вы создаете, из BaseController
и в вашем макете используйте свойство ViewBag
для доступа к вашим пользовательским данным.
public class BaseController : Controller
{
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
base.Initialize(requestContext);
// retireve data
var data = new ApplicationBaseModel();
// set to viewbag
ViewBag.UserData = data;
}
}
Таким образом, вам не нужно выводить все ваши классы моделей из ApplicationBaseModel
.Вы можете иметь строго типизированные представления и, кроме того, свои пользовательские данные как свойство ViewBag
.