У меня есть 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"})%>