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