【问题标题】:MVC Html data attribute rendering differenceMVC Html数据属性渲染区别
【发布时间】: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


【解决方案1】:

我引用another website的答案:

这是引入的条件属性的结果 网页 2 (MVC 4): http://www.mikesdotnetting.com/Article/201/Cleaner-Conditional-HTML-Attributes-In-Razor-Web-Pages
两个选项:恢复到 Web Pages 1 (MVC 3) 或编辑所有 受影响的文件。

如果应用于属性的值为true,则结果是重复该属性(例如,这对于select 中的标签option 很有用)。如果设置的值为false,则不呈现任何内容(不是事件属性名称)。

因此,作为 @Jamie 和 @Peter 的 cmets,您的开发环境中可能有不同版本的 Razor 引擎。

【讨论】:

  • 这看起来是个问题。谢谢你。
猜你喜欢
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2021-11-05
  • 2012-05-09
  • 2023-03-22
  • 2018-01-24
  • 1970-01-01
  • 2015-02-17
相关资源
最近更新 更多