从后面的代码将变量传递给javascript方法

时间:2011-01-10 13:53:29

标签: javascript asp.net

我从.cs文件调用javascript函数,如下所示:

private string CallValuesScript()
{
     StringBuilder sb = new StringBuilder();
     sb.AppendLine("$(document).ready(function() {");
     sb.AppendLine("DisplayValues();");
     sb.AppendLine(" });");
     return sb.ToString();
}

我在班级宣布了两个整数   private int ratingLinkId = 0;   private int ratingValue = 0;

请告诉我如何将这两个整数值传递给函数“DisplayValues();” ?

我的javascript函数是aspx,如下所示:

 function DisplayRatings(id, count) {  
//code
}

由于

6 个答案:

答案 0 :(得分:1)

您可以将服务器端变量附加到客户端,方法是将它们附加到脚本助手中的方法调用中。

sb.AppendLine("DisplayValues(" + ratingLinkId.ToString() + ", " + ratingValue.ToString() + ");")

答案 1 :(得分:1)

您可以使用

sb.AppendLine("DisplayValues(" + ratingLinkId + "," + ratingValue + ");");

答案 2 :(得分:1)

您希望避免在代码隐藏中生成JavaScript。我个人也不喜欢我的javascript中嵌入的代码块。此外,在HTML中使用隐藏字段意味着这些值最终会在表单提交时提交。

我的解决方案是在代码隐藏中创建一个私有内部类,其中包含JavaScript中所需的所有值的属性:

class JSValues {
    public int id { get; set; }
    public int count { get; set; }
}

在codebehind中,将其序列化为JSON:

string json = new JavaScriptSerializer().Serialize(new JSValues() {
    id = 0,
    count = 0 // or whatever you want to assign them
});

ClientScript.RegisterClientScript(
    this.GetType(),
    "codeBehindToJS",
    "var fromCodeBehind = " + json + ";");

最后,在javascript中,可以访问这些值:

DisplayValues(fromCodeBehind.id, fromCodeBehind.count);

编辑:一些更正,即使这对派对来说有点晚了。

答案 3 :(得分:1)

使用$ get的解决方案对我不起作用....

但是这里有一个简单的方法,可以不使用隐藏字段。

在您的代码后面定义您的变量:

Protected maxPhotos As String

然后在您的JavaScript中的aspx页面上,只需抓住它:

var maxPhotos = 0 + "<%=maxPhotos%>";

我做了“0+”,因为我想强制从字符串转换为数字。

答案 4 :(得分:0)

一种方法是在aspx中包含包含值的隐藏字段。只有在页面加载后变量不会发生变化时,这才能正常工作。

您可以做的另一件事是使用带有WebMethod / ScriptMethod属性的页面方法,并将其称为来自javascript的Web服务调用。

另一种方法是在构建javascript字符串时将变量传递给javascript函数

答案 5 :(得分:0)

@San,我同意Wraith的看法。在初始化代码中的某处(aspx页面标记,page_load等)创建隐藏字段并将其值设置为所需的整数。完成后,您将不再需要使用代码创建您的js。

这是一个非常简单的例子,我用文字设置了隐藏字段。您可以轻松地保留未设置的值,并将它们设置在.cs页面中的某些初始化代码中。

将这些行添加到.aspx页面

<asp:HiddenField runat="server" id="hdnfldarg1" Value="1" />
<asp:HiddenField runat="server" id="hdnfldarg2" Value="2" />

现在将您的js代码更改为以下内容。假设您使用的是较新版本的asp.net,Microsoft有一些特殊的js函数$ get,$ find将asp.net id转换为clientid。

$(document).ready(function() {
var arg1 = $get('<% hdnfldarg1 %>'); 
var arg2 = $get('<% hdnfldarg2 %>');
DisplayValues(arg1,arg2);") 
 });"

当然这是未经测试的代码。您可以添加任何Page_load / init代码来设置两个隐藏字段的确切值。如果您尝试使用单独的js文件

,我不确定这会起作用