【发布时间】:2015-08-13 14:46:15
【问题描述】:
我遇到了一个非常奇怪的问题,我找不到原因。
在我的 Asp.Net MVC 应用程序 (.net4.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 @Model.MyFlag 中,呈现为Click Me True。现在我怀疑这可能与 Debug vs Release 模式有关,但是在玩过这个之后它没有任何区别。
我对此的解决方法是更改代码以将布尔值输出为字符串值,例如data-is-flagged="@Model.MyFlag.ToString()" 然后在本地和服务器上呈现相同的内容。
任何想法这是什么原因?
【问题讨论】:
-
您在本地测试和测试部署版本时使用的是同一个浏览器吗?
-
@jadarnel27 是的,相同的浏览器。还尝试了其他浏览器。
-
您是否有可能以某种方式在本地与服务器上运行不同版本的 Razor 视图引擎?您在服务器上看到的行为有点像 Razor 2 中引入的条件 html 属性功能。
-
我不能 100% 确定造成这种差异的原因,但似乎在服务器上部署项目时呈现的 HTML 是正确的。看看这里:stackoverflow.com/a/4140263/3130094
-
感谢大家的cmets。看起来这是本地和服务器上的 MVC 版本差异。
标签: c# asp.net asp.net-mvc asp.net-mvc-4