2014-09-03 2 views
0

Цель моей работы - отключить текстовое поле на веб-странице, если выполнено условие1.Как присвоить свойство модели дополнительнымViewData в EditorFor в MVC4

Так что я создал шаблон представления под названием DoubleTemplate

@model double 

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

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

и обратно к моей веб-страницы, вот мой код, чтобы назвать этот шаблон

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

Произошла ошибка при втором м, говоря:

В текущем контексте имя 'm' не существует

Так что мой вопрос заключается в том, чтобы присвоить свою модель собственность к additionalViewData в EditorFor

Btw, вот синтаксис EnditorFor на MSDN

public static MvcHtmlString EditorFor<TModel, TValue>(
    this HtmlHelper<TModel> html, 
    Expression<Func<TModel, TValue>> expression, 
    string templateName, 
    Object additionalViewData 
) 

ответ

1

Предполагая CurrentProgramYear это свойство в вас модели, изменения

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

в

.... new {Switcher = Model.CurrentProgramYear ... 
+0

Привет @Stephen, теперь он работает :) thx. Однако, если код (на веб-странице) находился в цикле, и требуемое свойство находится в экземпляре MyViewModel, который находится в коллекции MyViewModel (назовем его MyList), тогда в этом случае я не был бы способный использовать модель, как мы можем решить эту проблему? – Franva

+0

Я не уверен, что понимаю - вам нужно будет опубликовать немного больше вида, включая цикл. Но почему вы так делаете это, а не просто @ @ (Model.CurrentProgramYear == 1) {@ Html.TextBoxFor (m => m.Year1Data)} '? –

+0

Привет, Стивен, потому что у меня более 50 похожих разделов кода на той же странице, которые находятся в разных условиях, чтобы показать/скрыть. Поэтому я предпочитаю использовать View Temple. но nvm, я попробовал свой предполагаемый сценарий и нашел, что это не имеет смысла. поэтому мы можем игнорировать это. благодаря :) – Franva

Смежные вопросы