为啥 <input type="hidden"> 不能接受来自服务器端的布尔值?
Posted
技术标签:
【中文标题】为啥 <input type="hidden"> 不能接受来自服务器端的布尔值?【英文标题】:Why cannot <input type="hidden"> accept a boolean value from server side?为什么 <input type="hidden"> 不能接受来自服务器端的布尔值? 【发布时间】:2016-02-16 11:49:53 【问题描述】:在服务器端,我定义了一个新的布尔值并将其设置为<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>
为什么?我错过了什么吗?
【问题讨论】:
你错过了什么 - 没有。这正是剃须刀引擎的工作方式。如果一个属性的值为null
或false
,它不会被渲染 - 如果你添加了name="@isAuthor"
它也不会被渲染
你也可以使用@html.Hidden()
,如果为false则不会隐藏值。
【参考方案1】:
这是一个称为条件属性的 Razor 视图引擎功能。这个想法是为了简化场景,您希望或不希望根据值呈现属性。以前您必须编写if
语句或使用三元运算符来处理它,但使用条件属性这一切都大大简化了。
使用条件属性,如果属性的值为null
或false
,则不会呈现该属性。如果您希望值为false
,则需要将其转换为字符串,就像您在问题中所做的那样。
您可以在blog article 中阅读有关条件 Razor 属性的精彩介绍
【讨论】:
谢谢。这很有帮助:)以上是关于为啥 <input type="hidden"> 不能接受来自服务器端的布尔值?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 <input type="hidden"> 不能接受来自服务器端的布尔值?
为啥 <input type="number" maxlength="3"> 在 Safari 中不起作用?
为啥 <input type="number" maxlength="3"> 在 Safari 中不起作用?
<input type="number"> 在 Firefox 中。为啥 Mozilla 不支持在其浏览器中输入数字?