2015-04-28 110 views
1

在我的web應用程序,我從服務器發送一些字符串,我使用它們像這樣在我的JS特殊字符轉向HTML代碼C#

var Texts = { 
    FillAllFieldsError: '@Texts.FillAllFieldsError', 
    PasswordChangeSuccess: '@Texts.PasswordChangeSuccess' 
} 

這是來自服務器的字符串已經一些特殊的字符,如「Ø,Æ」等。它們變成了HTML代碼「foresp ø rsel」。

有誰知道如何解決它?我使用UTF-8編碼

<meta charset="utf-8" /> 

回答

1

使用@Html.Raw()是正確的方法。

+1

ASP Mvc將始終HTML默認情況下編碼任何值。您可以使用Html.Raw或使屬性值爲IHtmlString類型。所以如果你的文本屬性是IHtmlString而不是字符串,那麼它們也不會被編碼。您可以通過使用MvcHtmlString.Create(字符串值)將任何字符串轉換爲IHtmlString –

1

我用這個

@Html.Raw(Json.Encode(Texts.FillAllFieldsError)) 

和它的工作。

0

這是做什麼你正在嘗試做的最安全的方式:

var Texts = @Html.Raw(JsonConvert.SerializeObject(new { 
    Texts.FillAllFieldsError, 
    Texts.PasswordChangeSuccess 
}); 

^使用匿名對象,如果你需要指定的屬性包括

或使用延伸方法,如:

using Newtonsoft.Json; 

public static class JavascriptExtensions { 
    public static IHtmlString AsJavascript<T>(this T value) where T: class{ 
     return MvcHtmlString.Create(JsonConvert.SerializeObject(value)); 
    } 
} 

然後在您的視圖,你可以這樣做:

var Texts @Texts.AsJavascript();