簡體   English   中英

C#中嵌套引號的可能級別是什么?

[英]What are the possible levels of nested quotes in C#?

我試圖直接在ASP.NET網頁上編寫Javascript變量賦值代碼。

Response.Write("<script>itHtml = '");
Response.Write("<div id=\"pop_ctrl\">Select</div><ul id=\"demo_ul\">");
foreach (Article a in arts)
{
    Response.Write("<li class=\"demo_li\"><a onclick=\"ShowArticleCard(" + a.Id + ",\'" + a.User + "\',\'" + a.DateString + "\'); return false\"><div>" + it.User + "</div>&nbsp;&nbsp;<div>" + it.Title + "</div></a></li>");
}
Response.Write("</ul>");
Response.Write("';</script>");

單擊此標記中的Anchor標簽會執行ShowArticleCard()函數。 此函數接受一個int和兩個string參數。 當我嘗試添加C#字符串變量代替字符串參數時,它將像JavaScript關鍵字一樣替換它們。 我嘗試使用'\\'\\" ,但是錯誤仍然存​​在。因此,我們可以使用任何級別的嵌套引號嗎?

嘗試將實際值(參數)用引號引起來,像這樣,

onclick=\"ShowArticleCard(" + a.Id + ",'" + 
          a.User + "','" + a.DateString + "'); // Remaining code

我從int類型參數中刪除了單引號,並從字符串類型中刪除了轉義斜線。 它們可以簡單地用' 現在,當代碼運行時,它將被視為字符串。 否則(如果值是數字),則忽略這些引號並按原樣輸入。 只有字符串類型的數據需要用'"包裹。 在JavaScript中,它們是相同的 。在C#中'"具有不同的含義, 您應該知道

提示 :另外,如果您要為客戶端呈現編寫某些內容(例如在ASP.NET中),則可以輕松地將其編寫為:

string.Format("<a href='{0}' onclick='func({1})'>My Link</a>",
               hyperlink, param);

這將按照您想要的方式呈現。 :)一旦在瀏覽器中呈現,單引號將轉換為雙引號。 或者,您可以在字符串前使用@ ,並在字符串內寫入" ,而不必對其進行轉義。

我想出了一種方法。 我不知道為什么以前沒有想到它。

我用\\\\'封閉了JavaScript函數的字符串參數。 像這樣:

ShowArticleCard(" + a.Id + ",\\'" + a.User + "\\',\\'" + a.DateString + "\\');

這樣結果代碼將是:

ShowArticleCard(someid,\'someUser\',\'someDateString\');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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