簡體   English   中英

將字符串值從c#文件傳遞到js文件

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

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