ViewBag를 사용하는 것을 싫어하기 때문에 this blog post의 지침에 따라 내 _layout.cshtml 파일에 강력한 형식의보기 모델을 만들었습니다.내 레이아웃보기에서 내 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