我有以下代码:
@if (Model.A == Model.B)
{
Html.Hidden("a1", Model.A1);
}
else
{
Html.Hidden("a2", Model.A2);
}
使用上面的代码,不会创建隐藏字段,也不会出现任何错误。
30分钟后,我意识到,如果我把@放在Html.Hidden后面,它可以工作:
@if (Model.A == Model.B)
{
@Html.Hidden("a1", Model.A1);
}
else
{
@Html.Hidden("a2", Model.A2);
}
有什么想法吗?
由于
答案 0 :(得分:5)
Html
是一个表单属性,映射到HtmlHelper
的实例。 HtmlHelper.Hidden
返回 MvcHtmlString
Html.Hidden("a1", Model.A1);
不执行任何操作,因为未捕获返回的值。 您没有收到任何错误,因为它是完全有效的C#代码(捕获返回是可选的)。但是,大多数静态分析工具都会警告您,因为它很可能是一个错误(正如您所发现的那样)。
另一方面,
@Html.Hidden("a1", Model.A1);
与
相似Response.Write(Html.Hidden("a1", Model.A1));
将返回值写入HTML响应。