Tim*_*mes 5 c# asp.net asp.net-mvc asp.net-mvc-4
我遇到了一个非常奇怪的问题,我无法找到原因.
在我的Asp.Net MVC应用程序(.net4.0/MVC4)中,我在一些html元素中重新出现html数据属性,然后在JavaScript中使用.
所以在应用程序中我有一个模型,例如
public class MyModel{
public bool MyFlag { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后我将这个模型传递到一个简单的MVC视图页面,并将布尔值渲染到html数据属性中,例如
@model MyProject.MyModel
<a href="#" data-is-flagged="@Model.MyFlag">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
现在,在本地运行项目时,html呈现为:
<a href="#" data-is-flagged="True">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
但是,当在服务器上运行时,html呈现为:
<a href="#" data-is-flagged="data-is-flagged">Click Me</a>
Run Code Online (Sandbox Code Playgroud)
起初我认为布尔值可能不是以某种方式设置的,所以我将它添加到Click Me @Model.MyFlag呈现为的元素中Click Me True.现在我怀疑这可能与Debug vs Release模式有关,但是在玩这个之后它没有任何区别.
我对此的修复是更改代码以将布尔值输出为字符串值,例如data-is-flagged="@Model.MyFlag.ToString()",然后在本地和服务器上呈现相同的值.
有什么想法是什么原因造成的?
我引用另一个网站的答案:
这是网页 2 (MVC 4) 中引入的条件属性的结果: http://www.mikesdotnetting.com/Article/201/Cleaner-Conditional-HTML-Attributes-In-Razor-Web-Pages
两个选项:恢复到网页 1 (MVC 3) 或编辑所有受影响的文件。
如果应用于属性的值为,结果是该属性被重复(这对于实例内的true标签很有用)。如果设置的值为,则不会呈现任何内容(不是事件属性名称)。optionselectfalse
因此,正如 @Jamie 和 @Peter 的评论,您的开发环境中可能有不同版本的 Razor 引擎。
| 归档时间: |
|
| 查看次数: |
580 次 |
| 最近记录: |