![](/img/trans.png)
[英]How to escape a double-quote in inline c# script within javascript?
[英]Escaping a double-quote in inline c# script within javascript
我需要在javascript中轉換內聯c#中的雙引號。 代碼如下:
if ("<%= TempData["Message"]%>" == "") {
// code
};
通常,我會像這樣使用單引號:
if ('<%= TempData["Message"]%>' == "") {
// code
};
但是, TempData["Message"]
在其中包含單引號(當它包含由ASP.NET MVC中的Html.ActionLink()幫助程序生成的鏈接時)。 因此,雖然我可以將TempData["Message"]
所有ActionLink助手更改為標簽,但這是一個有趣的問題,並且很想知道是否有人有答案。
調用HttpUtility.JavaScriptStringEncode
。
這種方法是ASP.Net 4.0的新方法; 對於早期版本,請使用WPL 。
您可以在Razor視圖中使用AjaxHelper.JavaScriptStringEncode方法,如下所示:
if ("@Ajax.JavaScriptStringEncode(TempData["Message"].ToString())" == "") {
// do stuff
}
如果這太冗長,請在/App_Code/JS.cshtml
創建這個小助手
@helper Encode(string value) {
@(HttpUtility.JavaScriptStringEncode(value))
}
然后您可以從任何視圖調用:
@JS.Encode("'single these quotes are encoded'")
我已經通過編寫一個HtmlHelper來解決這個問題,它將字符串編碼為Javascript中可接受的格式:
public static string JSEncode(this HtmlHelper htmlHelper, string source)
{
return (source ?? "").Replace(@"'", @"\'").Replace(@"""", @"\""").Replace(@"&", @"\&").Replace(((char)10).ToString(), "<br />");
}
然后,在您的視圖中:
if ('<%= Html.JSEncode( TempData["Message"] ) %>' == "") {
// code
};
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.