用双引号替换单引号

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 双引号 (' vs ")

这真的让人无法理解,我感觉自己都快要疯了。


我能想到的唯一事情就是文档类型<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">需要双引号而不是单引号,但我看不出引擎或Web服务器如何翻译输出的源代码。 - rqmedes
1个回答

1

哇,谢谢你找到这个好东西,解释了为什么我本地使用的1.6版本Spark可以工作,因为这个问题已经被修复了,但是生产环境中只使用1.5版本。现在需要找出为什么我的部署没有同步依赖项。再次感谢! - rqmedes

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接