MVC Html数据属性呈现差异
本文关键字:Html 数据属性 MVC | 更新日期: 2023-09-27 18:07:41
我遇到了一个非常奇怪的问题,我找不到原因。
在我的Asp。. Net MVC应用程序(. Net 4.0/MVC4)我在一些html元素中渲染html数据属性,然后在JavaScript中使用。
在应用中我有一个模型,例如
public class MyModel{
public bool MyFlag { get; set; }
}
然后我将这个模型传递到一个简单的MVC视图页面,并将布尔值呈现到html数据属性中,例如
@model MyProject.MyModel
<a href="#" data-is-flagged="@Model.MyFlag">Click Me</a>
现在在本地运行项目时,html呈现为:
<a href="#" data-is-flagged="True">Click Me</a>
但是当在服务器上运行时,html呈现为:
<a href="#" data-is-flagged="data-is-flagged">Click Me</a>
起初我认为布尔值可能没有以某种方式设置,所以我将其添加到渲染为Click Me True
的元素Click Me @Model.MyFlag
中。现在我怀疑这可能与调试与发布模式有关,但是在玩了这个之后,它没有什么区别。
我对此的修复是改变代码输出布尔值作为字符串值,例如data-is-flagged="@Model.MyFlag.ToString()"
,然后在本地和服务器上呈现相同。
你知道这是什么原因吗?
我引用了另一个网站的答案:
这是引入条件属性的结果网页2 (MVC 4):http://www.mikesdotnetting.com/Article/201/Cleaner-Conditional-HTML-Attributes-In-Razor-Web-Pages
两个选项:返回到Web Pages 1 (MVC 3)或编辑所有的Web页面受影响的文件。
如果应用于属性的值是true
,则结果是重复该属性(例如,这对于select
中的标记option
很有用)。如果值设置为false
,则不呈现任何内容(不包含事件属性名称)。
因此,正如@Jamie和@Peter的评论,您的开发环境中可能有不同版本的Razor引擎。