ASP.NET MVC TextBox для вспомогательного рендеринга пустым, когда ноль - PullRequest
2 голосов
/ 12 марта 2010

Я заметил, что помощник 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 (встроенной).

1 Ответ

0 голосов
/ 26 сентября 2011

Если Model равно null, то попытка доступа к Model.PostCode.postname вызовет исключение NullReferenceException, поэтому я не думаю, что вы сможете исправить это в TextBoxFor. Вы можете попробовать сделать что-то вроде Model != null && Model.PostCode != null ? Model.PostCode.postname : null, но это довольно неприятно: - (

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...