我注意到如果没有模型,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团队完成(内置)。
答案 0 :(得分:0)
如果Model
为null
,则尝试访问Model.PostCode.postname
会抛出NullReferenceException,因此我认为您无法在TextBoxFor中修复它。你可以尝试做Model != null && Model.PostCode != null ? Model.PostCode.postname : null
这样的事情,但这很讨厌: - (