簡體   English   中英

在javascript中轉換內聯c#腳本中的雙引號

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM