ASP.NET MVC TextBoxFor帮助器在null时呈现为空

时间:2010-03-12 11:24:27

标签: asp.net-mvc

我注意到如果没有模型,TextBoxFor帮助器呈现为空,例如当我有CreateEdit ViewUserControl时。在“编辑”视图中填写字段时,“创建字段”中的内容为空但仍呈现。

问题是TextBoxFor的名称不接受不同的Id(与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 :(得分:0)

如果Modelnull,则尝试访问Model.PostCode.postname会抛出NullReferenceException,因此我认为您无法在TextBoxFor中修复它。你可以尝试做Model != null && Model.PostCode != null ? Model.PostCode.postname : null这样的事情,但这很讨厌: - (