为什么<input type =“hidden”/>不能从服务器端接受布尔值?

时间:2015-11-15 07:33:34

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

从服务器端,我定义了一个新的布尔值并将其设置为<input>标签,但浏览器无法检测到它。

@{ var isAuthor = false; }
<input type="hidden" value="@isAuthor" />

编译后,结果为:<input type="hidden"></input>

但是,当我尝试将isAuthor转换为string时,它应该有效:

@{ var isAuthor = false; }
<input type="hidden" value="@isAuthor.ToString()" />

结果:<input type="hidden" value="false"></input>

为什么呢?我错过了什么吗?

1 个答案:

答案 0 :(得分:19)

这是一个名为条件属性的Razor视图引擎功能。我们的想法是简化场景,您希望或不想根据值渲染属性。以前你必须编写if语句或使用三元运算符来处理它,但是使用条件属性它会大大简化。

对于条件属性,如果属性的值为nullfalse,则不会呈现该属性。如果您希望值为false,则需要将其转换为字符串,就像您在问题中所做的那样。

您可以在此blog article

中阅读有关条件Razor属性的精彩介绍