У меня есть Html.TextBox(), и мне нужно отключить его в определенных условиях. С TextArea он выглядит следующим образом:
<%=primaryLang ? Html.TextArea("e.location", new { rows = 2, cols = 60 }) : Html.TextArea("e.location", new { rows = 2, cols = 60, disabled = "true" })%>
Но с помощью TextBox это невозможно:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.TextBox("e.startDate", new { disabled = "true"})%>
Он выдает {disabled = true} значение. Это связано с тем, что единственная функция, которая позволит вам передать HtmlAttributes, потребует также передачи модели. Это представление строго типизировано, и модель автоматически заполняется.
Если я пройду так:
Html.TextBox("e.startDate", Model.e.startDate, new { disabled = "true"})
или вот так:
Html.TextBox("e.startDate", null, new { disabled = "true"})
версия GET будет работать, но версия POST выдаст исключение NullReferenceException. Как указано выше, похоже, тот же эффект. Оба предоставят правильные данные из модели в GET.
Если я оставлю это желание, вот так:
Html.TextBox("e.startDate")
он будет работать правильно, как для POST, так и для GET...
Почему? Любые способы достижения?
Спасибо!:)
Благодаря ответам ниже я решил это следующим образом:
<%=primaryLang ?
Html.TextBox("e.startDate") :
Html.Hidden("e.startDate") + Html.TextBox("e.startDate", null, new { disabled = "true"})%>