我一直在尝试处理 ASP.NET MVC 4 中的可选 HTMLrequired
和readonly
属性。令我惊讶的是,我发现null
HTML 助手中的属性被呈现为空字符串,而它们在 Razor 中被完全删除(期望的行为)。
例如,这段代码:
@{ string disabled = null; string @readonly = null; }
@Html.TextBox("t1", "Value", new { disabled, @readonly })
<input type="text" name="t2" value="Value" disabled="@disabled" readonly="@(@readonly)" />
渲染:
<input disabled="" id="t1" name="Txt1" readonly="" type="text" value="Value" />
<input type="text" name="t2" value="Value" />
基本上我想知道的是:
- 这两种不同行为背后的原因是什么?
- 有没有办法在
Html.TexBox
不编写任何自定义代码的情况下获得相同的结果?
编辑
如果不编写自定义 Html Helper,这是不可能的,但是CodePlex上有一个功能请求。