2013-06-28 3 views
0

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를 얻지는 않으며 실행했을 때 오류가 발생합니다.

답변

0

보기에 모델을 강력하게 입력하려면 @model BaseViewModel을 사용해야합니다. 그런 다음 @Model.Theme

+0

않는 모든 BaseViewModel''에보기를 입력합니다. 모델이 실제로 채워지지 않습니다. 이것은 레이아웃보기임을 기억하십시오. – Chev

관련 문제