2013-12-13 44 views
2

我敲我的頭靠在牆上就這一個,並想知道爲什麼當我附上一個HTML屬性,如單引號ID標籤:<div id='test'></div>,它們會自動被替換爲雙引號:<div id="test"></div>,呈現併發送給客戶端進行查看。ASP.Net MVC:在HTML元素的單引號屬性

有沒有辦法在屬性中強制執行單引號?

到目前爲止,我已經試過@Html.Raw("'test'"),@Html.Raw("id='test'")等,不管我做了什麼,引號仍然被替換。我看到很多單引號成功使用沒有自動轉換的例子,所以我想知道發生了什麼事情,如果任何人都可以提供解決此問題

我使用ASP.Net MVC 5,Bootstrap 3.0,Jquery ,和更少,在JavaScript庫和標準Razor視圖方面沒有太多異域風情。

感謝您的回答。

+0

您是否需要將id設置爲'test'或'test''? – Hanady

+0

沒有什麼不相關的,並被用來提供一個簡化的例子。如果屬性是data-options ='two',結果是相同的。 –

+0

如果你通過瀏覽器查看源代碼,那麼你總是會看到瀏覽器想要的是什麼。例如IE總是顯示你雙引號。這是因爲代碼在瀏覽器顯示之前正在被解析。所以你正在看着你的解析html的重新渲染。 – Silvermind

回答

1

剃鬚刀引擎自動轉義任何HTML輸出,使用Html.Raw告訴引擎只是按原樣輸出。您需要使用Html.Raw來完成整個HTML代碼塊,而不僅僅是屬性。

@Html.Raw("<div id='test'></div>") 

或者,您可以輸出您的屬性作爲文字,例如,

<div @("id='active'")></div> 

有趣的是,它看起來好像瀏覽器是預處理的HTML與雙打代替單引號。我檢查的結果來從服務器上下來,我

<div id='active'></div> 

然而,當我再在單引號已經改爲雙的瀏覽器(Chrome 31/11 IE)瀏覽的HTML。這不僅僅是一個顯示事物,因爲當我從瀏覽器保存輸出時,它仍然有雙引號。

這可能是最現代的瀏覽器的標準,不幸的是,它看起來並不像你有過這麼多的控​​制權。

+0

這些例子都沒有工作... 使用乾淨的MVC 5應用程序,第一種方法導致'

',第二種方法導致'
'。 –

+0

@SunshineAttack嗯,這很奇怪,也許MVC5改變了Raw的工作方式,但我確信它應該按原樣輸出。那麼如果你做'

'? – James

+0

@Sunshine攻擊或嘗試'

' – James

相關問題