从服务器端,我定义了一个新的布尔值并将其设置为<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>
为什么呢?我错过了什么吗?
答案 0 :(得分:19)
这是一个名为条件属性的Razor视图引擎功能。我们的想法是简化场景,您希望或不想根据值渲染属性。以前你必须编写if
语句或使用三元运算符来处理它,但是使用条件属性它会大大简化。
对于条件属性,如果属性的值为null
或false
,则不会呈现该属性。如果您希望值为false
,则需要将其转换为字符串,就像您在问题中所做的那样。
您可以在此blog article
中阅读有关条件Razor属性的精彩介绍