ASP.Net MVC:HTML元素属性中的单引号

时间:2013-12-13 09:25:53

标签: asp.net-mvc razor asp.net-mvc-5

我正在敲打这个问题,并且想知道为什么当我将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视图方面没什么异国情调。

感谢您的回答。

1 个答案:

答案 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。这不仅仅是一个显示器,因为当我从浏览器保存输出时它仍然有双引号。

对于大多数现代浏览器而言,这可能是常态,不幸的是,它看起来并不是很容易控制它。