MVC Html.Hidden - @确实有所作为

时间:2014-01-29 19:57:13

标签: c# asp.net-mvc html-helper

我有以下代码:

@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);
}

有什么想法吗?

由于

1 个答案:

答案 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响应。