我試圖在asp.net mvc視圖中呈現動態數據庫標題。所以我認爲我有這樣的東西。編碼問題asp.net mvc 4
@section meta {
<meta name="title" content="@Model.title" />
}
當模型在西班牙語中有特殊字符,如MISION它顯示在標題類似 Misi&#243;n
... I'm在我的佈局使用meta charset utf8
。有沒有我錯過的特殊編碼?
如何在標題頁中渲染Misión
?
我試圖在asp.net mvc視圖中呈現動態數據庫標題。所以我認爲我有這樣的東西。編碼問題asp.net mvc 4
@section meta {
<meta name="title" content="@Model.title" />
}
當模型在西班牙語中有特殊字符,如MISION它顯示在標題類似 Misi&#243;n
... I'm在我的佈局使用meta charset utf8
。有沒有我錯過的特殊編碼?
如何在標題頁中渲染Misión
?
使用@someproperty
將假定您正在渲染HTML並確保它被編碼以防止跨站點腳本之類的事情發生。在這種情況下,您希望它呈現原始值,在這種情況下,您需要使用Html.Raw(...)
以原始形式呈現您的內容。
@section meta {
<meta name="title" content="@Html.Raw(Model.title)" />
}
但是,要知道,如果Model.title
可以來自用戶生成的內容(或其他一些不受信任的來源),你可以打開自己可達安全問題(例如,如果您Model.title
的值爲「 。test" /> <script ...etc...
」,惡意用戶可以利用它來代碼注入到您的網頁
編輯:剛纔下面,包括我的意見爲未來的Google的內容,因爲它似乎這是實際的解決方案...
如果你把@Html.Raw(Model.title)
直接放在頁面的某個地方(即不是在meta標籤),它正常工作在那裏,你可能會面臨同樣的problem discussed here,在這種情況下,你可以解決它通過使用稍微醜陋:
@section meta {
<meta name="title" @Html.Raw("content=\" + Model.title + "\"") />
}
方法 - 1
string value1 = "<html>"; // <html>
string value2 = HttpUtility.HtmlDecode(value1); // <html> //While getting
string value3 = HttpUtility.HtmlEncode(value2); // <html> //While saving
方法 - 2
Html.Raw("PKKG StackOverFlow"); // PKKG StackOverFlow
I'm仍然得到了同樣的問題,在我的** **佈局頁我使用了',然後'@RenderSection(「meta」,required:false)',這有什麼要做的嗎? – Steve
@Steve - 如果將@ @ Html.Raw(Model.title)'直接放在頁面某處(即不在元標記中),你能看到會發生什麼?如果它在那裏正常工作,您可能會面臨與[這裏](http://stackoverflow.com/questions/17597818/html-raw-insists-on-encoding-quotes)相同的問題,在這種情況下,您可以解決它通過使用稍微醜陋的:' – Alconja
非常微妙的提示。今天爲我們工作。謝謝非常多。 –