我一直在尝试处理ASP.NET MVC 4中的可选HTML required
和readonly
属性。令我惊讶的是,我发现HTML帮助程序中的null
属性呈现为在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上有一项功能请求。
答案 0 :(得分:1)
Html.TextBox()
行为来自System.Web.Mvc.Html
中的代码,该代码将RouteValueDictionary
个属性转换为实际的HTML。 (我相信代码在TagBuilder
)
原始HTML标记行为来自Razor v2语言解析器中的一个功能,该功能删除Razor标记中的属性,这些属性在运行时解析为null
。