Я выполнил инструкции в this blog post, чтобы создать сильно типизированную модель для моего файла _layout.cshtml, потому что я ненавижу использование ViewBag. Вот мой базовый контроллер, что все мои другие контроллеры наследуют от:Мой макет не узнает мой объект BaseModel
public class BaseController : Controller
{
protected BaseViewModel ModelBase { get; private set; }
protected override void OnResultExecuting(ResultExecutingContext filterContext)
{
var contextItems = filterContext.HttpContext.Items;
if (contextItems["ModelBase"] == null)
filterContext.HttpContext.Items["ModelBase"] = this.ModelBase;
base.OnResultExecuting(filterContext);
}
protected override void OnActionExecuting(ActionExecutingContext filterContext)
{
this.ModelBase = new BaseViewModel
{
Theme = Request.QueryString["theme"] ?? "cyborg"
};
base.OnActionExecuting(filterContext);
}
}
Все, что я пытаюсь сделать, это взять переменные строки запроса под названием «тема» и добавить его значение свойства Темы на BaseViewModel
. Согласно сообщению в блоге, я должен иметь возможность делать @ModelBase.Theme
в макете, но я не получаю intellisense, и он вызывает ошибку при запуске.
Все, что делает введите вид 'BaseViewModel'. Модель фактически не заполняется. Помните, что это макет. – Chev