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()",然后在本地和服务器上呈现相同。

你知道这是什么原因吗?

MVC Html数据属性呈现差异

我引用了另一个网站的答案:

这是引入条件属性的结果网页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引擎。