我正在敲打这个问题,并且想知道为什么当我将HTML属性(例如id标签用单引号:<div id='test'></div>
括起来)时,它们会自动被替换为double引号:<div id="test"></div>
,在呈现时发送到客户端进行查看。
有没有办法在属性中强制使用单引号?
到目前为止,我已尝试过@Html.Raw("'test'")
,@Html.Raw("id='test'")
等等,无论我做什么,引号仍会被替换。我看到很多单引号的例子没有自动转换成功使用,所以我想知道发生了什么,以及是否有人可以解决这个问题
我正在使用ASP.Net MVC 5,Bootstrap 3.0,Jquery和Less,在javascript库和标准Razor视图方面没什么异国情调。
感谢您的回答。
答案 0 :(得分:1)
剃刀引擎自动转义任何HTML输出,使用Html.Raw
告诉引擎按原样输出。您需要使用Html.Raw
来完成整个HTML块,而不仅仅是属性,例如
@Html.Raw("<div id='test'></div>")
或者,您可以将属性输出为文字,例如
<div @("id='active'")></div>
有趣的是,看起来好像浏览器正在预处理HTML并用双打替换单引号。我检查了从服务器下来的结果,我得到了
<div id='active'></div>
然而,当我在浏览器(Chrome 31 / IE 11)中查看HTML时,单引号已被替换为double。这不仅仅是一个显示器,因为当我从浏览器保存输出时它仍然有双引号。
对于大多数现代浏览器而言,这可能是常态,不幸的是,它看起来并不是很容易控制它。