2012-02-22 3 views
2

페이지의 일부 매개 변수 (두 개의 문자열)를 기본 페이지에서 렌더링 할 부분보기로 전달하려고합니다. 이렇게하려면 익명으로 형식화 된 객체를 전달하면됩니다.이 객체는 계속 RuntimeBinderException을 제공합니다. 내가 시도한 것을 감안할 때, 나는 오류를 얻는 것에 놀랄만 한 것이 아니라, 무엇을 시도해야할지 모르겠다. 부분적인 전망이 작업을 수행하는 방법이 아닌 경우 홈 \ PageWithPartialView.cshtml \부분 뷰로 전달 된 익명 형식의 개체에 어떻게 액세스합니까?

@Html.Partial("DynamicPartialView", new { paramFromPageToPartialView = "value" }) 

조회수 내가 '공유 \ DynamicPartialView.cshtml에게

@model dynamic // Doesn't make a difference 

@{ 
    // This is where I need to access and display the parameters 
    // passed from the main page 

    // Throws RuntimeBinderException 
    // Cannot apply indexing with [] to an expression of type 'object' 
    var try1 = Model["paramFromPageToPartialView"]; 

    // Throws RuntimeBinderException 
    // 'object' does not contain a definition for 'paramFromPageToPartialView' 
    var try2 = Model.paramFromPageToPartialView; 
} 

을 \ m 오픈. 부분 뷰에는 몇 백 줄의 코드가 생성되므로 사용자 정의 HtmlHelpers가 내게 다루기 힘들 것 같습니다.

+1

두 어셈블리가 모두 같은 어셈블리에 있습니까? –

+0

제 생각에는 ... 첫 번째는 Views \ Home \에 있고 다른 하나는 Views \ Shared \에 있습니다. 부분보기에서 예외가 발생합니다. –

+0

그래서 그들은 모두 같은 프로젝트에 속해 있습니까? 흠. 다른 어셈블리에 있다면 이해할 수 있습니다. 저는 MVC 사람이 아닙니다 ... 강제로 "일찍"컴파일하도록 할 수있는 방법이 있습니까? (MVC의 수명주기가 무엇인지 모르겠습니다.) 그러면 실제로 같은 어셈블리에 있는지 확인할 수 있습니다. –

답변

3

ViewBag은 이러한 종류의 문제를 해결하도록 설계되었습니다. 오히려, 모델에서 부분에서 paramFromPageToPartialView 소비보다 ViewBag에서 소비 :

@{ViewBag.paramFromPageToPartialView = "value";} 
@Html.Partial("DynamicPartialView") 

조회수 \ 공유 \ DynamicPartialView.cshtml

@model dynamic // Doesn't make a difference 

@{ 
    var try3 = ViewBag.paramFromPageToPartialView; 
} 
홈 \ PageWithPartialView.cshtml \

+0

빙고! 나는 내가 뭔가를 놓쳤다 고 확신했다. .. 고마워! –

+0

이것은 약간 다른 유형의 부분 뷰를 반복적으로 렌더링하고 현재 기본 클래스를 리팩터링 할 수없는 현재 상황에서 도움이되었습니다. 나는 [궁극적으로 반성과 함께] (http://stackoverflow.com/a/31306368/957950), 나머지 팀이 .NET MVC를 충분히 잘 알고 있다면 이것을 사용했을 것이다. – brichins

관련 문제