문제

ASP.NET MVC의 새 버전을보고 있습니다 (아직 보지 못한 경우 자세한 내용은 여기를 참조하십시오).

내 통제에는 유형의 대상이 있습니다 Person, 내가 전망을 전달하고 있습니다 ViewData.Model. 지금까지 모든 것이 잘되어 있으며 표시 준비가 된 뷰에서 객체를 추출 할 수 있습니다. 내가 얻지 못하는 것은 내가 어떻게 Html.DisplayFor() 메소드 데이터를 화면으로 가져 오는 방법. 나는 다음을 시도했다 ...

<% 
    MVC2test.Models.Person p = ViewData.Model as MVC2test.Models.Person;
%>
// snip
<%= Html.DisplayFor(p => p) %>

하지만 다음과 같은 메시지를받습니다.

CS0136 : 'P'라는 로컬 변수는이 범위에서 'P'와 다른 의미를 부여하기 때문에 이미 '부모 또는 현재'범위에 사용되어 다른 것을 나타냅니다.

나는 이것이 내가해야 할 일이 아니라는 것을 알고 있습니다. 변수를 재정의하면이 오류가 발생한다는 것을 알고 있지만 컨트롤러에서 객체에 액세스하는 방법을 모르겠습니다. 제 질문은 속성을 표시하기 위해 객체를보기에 어떻게 전달합니까?

NB 제한된 여가 시간에 이것을 읽고 있다고 덧붙여 야한다.

티아

도움이 되었습니까?

해결책

Html.DisplayFor 뷰가 강하게 깔려있을 때만 사용할 수 있으며보기에 전달 된 객체에서 작동합니다.

따라서, 귀하의 경우에, 당신은 유형의 사람과 모델 유형으로 견해를 선언해야합니다 (예 : something.something.View<Person>) (죄송합니다. 정확한 이름을 기억하지 못하지만 이것은 말이 될 것입니다) Html.DisplayFor(p => p), p 전달 된 모델 (Person) 값의 값을보기에 가져갑니다.

그것이 말이되기를 바랍니다.

다른 팁

P는 이미 변수 이름입니다. 그리고 가변 이름은 현재 범위에 걸쳐 고유해야합니다. 따라서 새로운 변수 'p'를 선언하므로 displayfor (p => p)는 유효하지 않습니다. 이렇게하면 컴파일러가 사람 P 또는 (p =>) 변수를 사용하는 것을 알지 못합니다.

따라서 이름을 바꾸십시오

<%= Html.DisplayFor(person => person) %>
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top