2014-09-03 3 views
0

내 작업의 목표는 condition1이 충족되면 웹 페이지의 텍스트 상자를 사용하지 않도록 설정하는 것입니다. MVC4의 EditorFor에서 additionalViewData에 모델 속성을 할당하는 방법

그래서 내가 DoubleTemplate

다시 내 웹 페이지에
@model double 

@if (ViewData["IsVisible"] != null) 
{ 
    var IsVisible = (bool)ViewData["Switcher"]; 

    if (IsVisible) 
    { 
     @Html.TextBox(string.Empty,Model) 
    } 
} 

그리고라는 뷰 템플릿을 생성, 여기에서 말하는 두 번째 m 아래에이 템플릿

@Html.EditorFor(m => m.Year1Data, "DoubleTemplate", new {Switcher = m.CurrentProgramYear == 1}) 

에게 오류를 호출하는 내 코드입니다 :

'm'이름이 현재 컨텍스트에 없습니다.

그래서 제 질문은 Btw는

EditorFor

에 additionalViewData 내 모델 속성을 할당하는 방법이다, 여기 CurrentProgramYear 가정 MSDN

에 EnditorFor의 구문은
public static MvcHtmlString EditorFor<TModel, TValue>(
    this HtmlHelper<TModel> html, 
    Expression<Func<TModel, TValue>> expression, 
    string templateName, 
    Object additionalViewData 
) 

답변

1

당신 모델, 변화의 속성입니다

.... new {Switcher = m.CurrentProgramYear ... 

10

+0

안녕하세요 @ 스테판, 이제 작동합니다 :) thx. 그러나 코드 (웹 페이지)가 루프에 있고 필요한 속성이 MyViewModel의 콜렉션에있는 MyViewModel의 인스턴스에있는 경우 (이 경우 MyList라고 함)이 경우에는 그렇지 않습니다. 모델을 사용할 수 있다면 어떻게이 문제를 해결할 수 있을까요? – Franva

+0

잘 모르겠습니다 - 루프를 포함하여 더 많은 뷰를 게시해야합니다. 하지만 왜 단순한'@if (Model.CurrentProgramYear == 1) {@ Html.TextBoxFor (m => mearyData)}'와 반대되는 것처럼 이것을 할 수 있을까요? –

+0

안녕하세요 스티븐. 같은 페이지에 50 개 이상의 유사한 코드 섹션이있어 서로 다른 조건으로 표시/숨기기를하고 있습니다. 그래서 뷰 ​​템플을 사용하기로했습니다. 하지만 nvm, 나는 내 가정 시나리오를 시도하고 그것이 의미가없는 것으로 나타났습니다. 그래서 우리는 그것을 무시할 수 있습니다. 감사 :) – Franva

관련 문제