[英]Passing a string value from c# file to js file
我試圖將一個字符串值從c#文件傳遞給js文件。
如果我嘗試傳遞一個int值,那么我可以傳遞它,但我無法傳遞字符串值。
string value = "abc";
int a=5;
TableCell.Attributes.Add("onclick", "F1("+value +")"); //NOTHING HAPPENS
TableCell.Attributes.Add("onclick", "F1("+a +")"); //Works Perfectly
js文件
function F1(value) {
alert(value);
}
將字符串值傳遞給引號''
采用
TableCell.Attributes.Add("onclick", "F1('"+value +"')");
^ ^
否則將其視為變量。 目前,您必須在瀏覽器控制台中收到錯誤。
考慮一下HTML的外觀。
第一版:
onclick="F1(abc)"
第二版:
onclick="F1(5)"
顯然,第二個版本傳遞的值為5
。 第一個版本傳遞abc
的值 - 無論是什么,在您正在執行的Javascript的上下文中。
你可以引述字符串,並確保你逃避報價等等-我假設在現實中,你的價值是從什么地方獲取的動態,而你可能沒有對內容的控制程度。 希望你正在使用的任何ASP.NET版本都可以使用它,例如HttpUtility.JavaScriptStringEncode
。
例如,要在調用中獲取字符串abc
,您希望該屬性為:
onclick="F1('abc')"
但如果要在通話中獲取I don't know
的字符串,您希望該屬性為:
onclick="F1('I don\'t know')"
關鍵是要看看生成的HTML - 假裝你是瀏覽器,從它的角度看世界。 一旦你弄清楚你想要生成什么HTML,編寫代碼通常會相對簡單。
嘗試在C#字符串中構建單引號時添加單引號。 在您的第一個場景中,Js正在接收:
F1(abc);
它讀作變量abc。 嘗試添加單引號(最好使用string.format,BTW):
TableCell.Attributes.Add("onclick", string.Format("F1('{0}')", value));
當您使用該字符串時,它將生成JavaScript代碼F1(abc)
。 這會將abc
解釋為變量名,而不是字符串文字。
在字符串周圍添加撇號以使其成為字符串文字:
TableCell.Attributes.Add("onclick", "F1('" + value + "')");
如果字符串可以包含撇號或反斜杠,則需要將它們轉義:
TableCell.Attributes.Add("onclick", "F1('" + value.Replace("\\", "\\\\").Replace("'", "\\'") + "')");
這將負責逃避任何特殊字符(即引號等...)
TableCell.Attributes.Add("onclick", "F1('"+HttpUtility.JavaScriptStringEncode(value)+"')");
如果您在參數中傳遞字符串,則需要使用“或”字符來分隔它。您的變量名稱在調用中轉換為(adb)。(“adb”)或('adb')將是字符串值。
那是因為它會打印出來
F1(abc)
所以它會尋找一個名為abc
的變量。
你應該用
TableCell.Attributes.Add("onclick", "F1(\""+value +"\")");
所以輸出將是
F1("abc")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.