在服务器端,我定义了一个新的 bool 值并将其设置为 <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>
为什么?我错过了什么吗?
最佳答案
这是一个称为条件属性的 Razor View 引擎功能。这个想法是为了简化您想要或不想根据值呈现属性的场景。以前您必须编写 if
语句或使用三元运算符来处理它,但是有了条件属性,这一切都大大简化了。
对于条件属性,如果属性的值为null
或false
,则不会呈现该属性。如果您希望该值为 false
,您需要将其转换为字符串,就像您在问题中所做的那样。
您可以在此 blog article 中阅读对条件 Razor 属性的精彩介绍。
关于c# - 为什么不能 <input type ="hidden"> 从服务器端接受 bool 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33717448/