在我的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"/>
它取代了单引号&#39;双引号&#34;。 如果变量数据中有双引号,它将会中断。
现在我知道我应该测试html特殊字符或至少做
<input type="hidden" name="buttons" value="${r.data.Replace(@"""", """)}"/>
为什么本地机器和生产输出之间存在差异?
这改变的地方是它是火花视图引擎的一部分,还是部分的 C#中的响应构建器,但这没有意义吗? 我唯一能想到的是与IIS和VS2010内置Web服务器的区别?
文件编码在本地和生产UTF8上是相同的,有使用相同的dll。和相同的构建类型是Release。
应允许单引号和双引号。 Single vs Double quotes (' vs ")
这对于如何发生这种情况没有任何意义 而且我觉得我正在失去理智。
答案 0 :(得分:1)
类似的问题在这里发布ASP.NET MVC 2 and sparkviewengine rendering single quotes to double quotes in html5 data- attribute(与被接受的anwser)可能不是相同的MVC版本,但可能是相同的Bug。