3

在我的 C# MVC 视图代码中,我有一个隐藏的输入字段

<input type='hidden'  name='foo' value='${r.data}'/>

在我的本地机器上测试它会生成 html 源代码。

<input type='hidden'  name='foo' value='bah'/>

在我的生产服务器上,它发送给客户端的源是

<input type="hidden"  name="foo" value="bah"/>

它已将单引号 ' 替换为双引号 "。如果变量数据中有双引号,它将中断。

现在我知道我应该测试 html 特殊字符或至少做

<input type="hidden"  name="buttons" value="${r.data.Replace(@"""", "&quot;")}"/> 

为什么本地机器和生产输出之间存在差异?

这在哪里发生了变化,它是 spark 视图引擎的一部分,还是 C# 中 Response builder 的一部分,但这没有意义?我唯一能想到的是 IIS 和 VS2010 内置 Web 服务器的区别?

本地和生产 UTF8 上的文件编码相同,使用相同的 dll。并且相同的构建类型是 Release。

应该允许单引号和双引号。 单引号和双引号(' vs ")

这没有任何意义这是怎么发生的而且我觉得我正在失去理智。

4

1 回答 1

1

此处发布了一个类似的问题ASP.NET MVC 2 和 sparkviewengine 在 html5 数据属性(带有接受的 anwser)中将单引号渲染为双引号可能不是相同的 MVC 版本,但可能是相同的错误。

于 2013-03-07T08:41:36.400 回答