将字符串值从c#文件传递到js文件

时间:2015-04-22 17:33:47

标签: javascript c# asp.net

我正在尝试将字符串值从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 file

function F1(value) {
    alert(value);
}

7 个答案:

答案 0 :(得分:4)

将字符串值传递给引号''

使用

TableCell.Attributes.Add("onclick", "F1('"+value +"')"); 
                                        ^          ^

否则将其视为变量。目前,您必须在浏览器控制台中收到错误。

答案 1 :(得分:4)

考虑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,编写代码通常会相对简单。

答案 2 :(得分:1)

尝试在C#字符串中构建单引号时添加单引号。在你的第一个场景中,Js正在接收:

F1(abc);

它读作变量abc。尝试添加单引号(并且最好使用string.format,BTW):

TableCell.Attributes.Add("onclick", string.Format("F1('{0}')", value));

答案 3 :(得分:1)

当您使用字符串时,它将生成JavaScript代码F1(abc)。这会将abc解释为变量名,而不是字符串文字。

在字符串周围添加撇号以使其成为字符串文字:

TableCell.Attributes.Add("onclick", "F1('" + value + "')");

如果字符串可以包含撇号或反斜杠,则需要转义它们:

TableCell.Attributes.Add("onclick", "F1('" + value.Replace("\\", "\\\\").Replace("'", "\\'") + "')");

答案 4 :(得分:1)

这将负责转义任何特殊字符(即引号等)

TableCell.Attributes.Add("onclick", "F1('"+HttpUtility.JavaScriptStringEncode(value)+"')"); 

答案 5 :(得分:0)

如果您在参数中传递字符串,则需要使用“或”字符来分隔它。您的变量名称将转换为调用中的(adb)。(“adb”)或('adb')是字符串值。

答案 6 :(得分:0)

那是因为它会打印

F1(abc)

因此它会查找名为abc的变量。

你应该使用

TableCell.Attributes.Add("onclick", "F1(\""+value +"\")");

所以输出将是

F1("abc")