【问题标题】:Why cannot <input type="hidden"> accept a boolean value from server side?为什么 <input type="hidden"> 不能接受来自服务器端的布尔值?
【发布时间】:2016-02-16 11:49:53
【问题描述】:

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

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

编译后结果为:&lt;input type="hidden"&gt;&lt;/input&gt;

但是,当我尝试将 isAuthor 转换为 string 时,它应该可以工作:

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

结果:&lt;input type="hidden" value="false"&gt;&lt;/input&gt;

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

【问题讨论】:

  • 你错过了什么 - 没有。这正是剃须刀引擎的工作方式。如果一个属性的值为nullfalse,它不会被渲染 - 如果你添加了name="@isAuthor" 它也不会被渲染
  • 你也可以使用@Html.Hidden(),如果为false则不会隐藏值。

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


【解决方案1】:

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

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

您可以在blog article 中阅读有关条件 Razor 属性的精彩介绍

【讨论】:

  • 谢谢。这很有帮助:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-24
  • 1970-01-01
  • 2018-06-12
相关资源
最近更新 更多