2013-08-01 106 views
2

我試圖在asp.net mvc視圖中呈現動態數據庫標題。所以我認爲我有這樣的東西。編碼問題asp.net mvc 4

@section meta { 

    <meta name="title" content="@Model.title" /> 
} 

當模型在西班牙語中有特殊字符,如MISION它顯示在標題類似 Misi&amp;#243;n ... I'm在我的佈局使用meta charset utf8。有沒有我錯過的特殊編碼?

如何在標題頁中渲染Misión

回答

2

使用@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 + "\"") /> 
} 
+0

I'm仍然得到了同樣的問題,在我的** **佈局頁我使用了',然後'@RenderSection(「meta」,required:false)',這有什麼要做的嗎? – Steve

+1

@Steve - 如果將@ @ Html.Raw(Model.title)'直接放在頁面某處(即不在元標記中),你能看到會發生什麼?如果它在那裏正常工作,您可能會面臨與[這裏](http://stackoverflow.com/questions/17597818/html-raw-insists-on-encoding-quotes)相同的問題,在這種情況下,您可以解決它通過使用稍微醜陋的:' – Alconja

+0

非常微妙的提示。今天爲我們工作。謝謝非常多。 –

0

方法 - 1

string value1 = "&lt;html&gt;";     // &lt;html&gt; 
string value2 = HttpUtility.HtmlDecode(value1); // <html>  //While getting 
string value3 = HttpUtility.HtmlEncode(value2); // &lt;html&gt; //While saving 

方法 - 2

Html.Raw("PKKG &nbsp; StackOverFlow");   // PKKG StackOverFlow