Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc ASP.NET MVC 4中不一致的空属性处理_Asp.net Mvc_Asp.net Mvc 4_Razor_Html Helper - Fatal编程技术网

Asp.net mvc ASP.NET MVC 4中不一致的空属性处理

Asp.net mvc ASP.NET MVC 4中不一致的空属性处理,asp.net-mvc,asp.net-mvc-4,razor,html-helper,Asp.net Mvc,Asp.net Mvc 4,Razor,Html Helper,我一直在尝试处理ASP.NETMVC4中可选的HTMLrequired和readonly属性。令我惊讶的是,我发现HTML助手中的null属性被呈现为空字符串,而它们在Razor中被完全删除(期望的行为) 例如,此代码: @{ string disabled = null; string @readonly = null; } @Html.TextBox("t1", "Value", new { disabled, @readonly }) <input type="text

我一直在尝试处理ASP.NETMVC4中可选的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)" />
@{string disabled=null;string@readonly=null;}
@TextBox(“t1”,“Value”,新的{disabled,@readonly})
呈现:

  <input disabled="" id="t1" name="Txt1" readonly="" type="text" value="Value" />
  <input type="text" name="t2" value="Value" />

基本上我想知道的是:

  • 这两种不同行为背后的原因是什么
  • 有没有一种方法可以在不编写任何自定义代码的情况下使用
    Html.TexBox
    获得相同的结果
编辑

如果不编写自定义Html帮助程序,这是不可能的,但是有一个功能请求在上。

Html.TextBox()行为来自
System.Web.Mvc.Html
中的代码,该代码将属性的
RouteValueDictionary
转换为实际的Html。(我相信代码在
TagBuilder
中)


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

是的,但仍然。。。我们期望在整个平台上对这些案例进行一致的处理。有没有办法在Html.Helpers中模仿类似的行为?@Meryovi:据我所知,没有(不修改源代码)。你可以打开一个功能请求或拉请求在我刚刚发现已经有一个功能请求那里,谢谢!