Я заметил, что помощник TextBoxFor рендерится пустым, если нет модели, как, например, когда у меня есть CreateEdit ViewUserControl. Когда в представлении «Редактировать» поля заполнены, когда в поле «Создать» поля пусты, но по-прежнему отображаются.
Проблема в том, что TextBoxFor не принимает разные идентификаторы для своего имени (так же, как LabelFor и другие, но для LabelFor у меня есть собственные помощники Html).
Так что в некоторых случаях нам все еще приходится использовать обычный помощник Html.TextBox. Проблема в том, что если я напишу это
<%=Html.TextBox("postname", Model.PostCode.postname, new { @class = "postsDropDown" })%>
ошибка возникает в представлении создания (очевидно).
Так что я должен сделать это:
<% if (Model != null) %>
<%=Html.TextBox("postname", Model.PostCode.postname, new { @class = "postsDropDown" })%>
<% else %>
<%=Html.TextBox("postname", null, new { @class = "postsDropDown" })%>
Теперь это то, что мне больше не нравится (IF).
Это единственный способ сделать это? Я знаю, что мог бы расширить и помощников TextBoxFor, но мне кажется, что это большая проблема. В конце мы перейдем к расширению всех помощников «For», но я думаю, что это должно быть сделано уже командой ASP.NET MVC (встроенной).