Цель моей работы - отключить текстовое поле на веб-странице, если выполнено условие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
)
Привет @Stephen, теперь он работает :) thx. Однако, если код (на веб-странице) находился в цикле, и требуемое свойство находится в экземпляре MyViewModel, который находится в коллекции MyViewModel (назовем его MyList), тогда в этом случае я не был бы способный использовать модель, как мы можем решить эту проблему? – Franva
Я не уверен, что понимаю - вам нужно будет опубликовать немного больше вида, включая цикл. Но почему вы так делаете это, а не просто @ @ (Model.CurrentProgramYear == 1) {@ Html.TextBoxFor (m => m.Year1Data)} '? –
Привет, Стивен, потому что у меня более 50 похожих разделов кода на той же странице, которые находятся в разных условиях, чтобы показать/скрыть. Поэтому я предпочитаю использовать View Temple. но nvm, я попробовал свой предполагаемый сценарий и нашел, что это не имеет смысла. поэтому мы можем игнорировать это. благодаря :) – Franva