0

我一直在尝试处理 ASP.NET MVC 4 中的可选 HTMLrequiredreadonly属性。令我惊讶的是,我发现nullHTML 助手中的属性被呈现为空字符串,而它们在 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上有一个功能请求。

4

1 回答 1

1

Html.TextBox()行为来自System.Web.Mvc.HtmlRouteValueDictionary属性转换为实际 HTML 的代码。(我相信代码在TagBuilder

原始 HTML 标记行为来自 Razor v2 语言解析器中的一项功能,该功能删除 Razor 标记中null在运行时解析为的属性。

于 2013-05-21T15:39:06.697 回答