我从.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
}
由于
答案 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)
这是一个非常简单的例子,我用文字设置了隐藏字段。您可以轻松地保留未设置的值,并将它们设置在.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文件
,我不确定这会起作用