在点击事件中,我调用相同的JavaScript函数3次,但javascript函数本身只执行一次。
BLL.Common.executeJSFunction("DoSomething();");
BLL.Common.executeJSFunction("DoSomething();");
BLL.Common.executeJSFunction("DoSomething();");
方法:
public static void executeJSFunction(string jsFunction)
{
var page = HttpContext.Current.Handler as Page;
ScriptManager.RegisterStartupScript(page, page.GetType(), "Exec", jsFunction, true);
}
Java脚本函数:
function DoSomething()
{
alert('Hello Word');
}
ps:页面上有一个ScriptManager和一个更新面板以防万一......
答案 0 :(得分:6)
您在每个函数调用时都会覆盖该键,请尝试:
BLL.Common.executeJSFunction("DoSomething();", "Exec1");
BLL.Common.executeJSFunction("DoSomething();", "Exec2");
BLL.Common.executeJSFunction("DoSomething();", "Exec3");
public static void executeJSFunction(string jsFunction, string key)
{
var page = HttpContext.Current.Handler as Page;
ScriptManager.RegisterStartupScript(page, page.GetType(), key, jsFunction, true);
}
答案 1 :(得分:4)
我相信这是因为您要为脚本分配相同的密钥("Exec"
)。为每个键分配一个不同的键,或者只是这样做:
BLL.Common.executeJSFunction("DoSomething();DoSomething();DoSomething();");
答案 2 :(得分:4)
现在,您在密钥Exec
下注册了相同的代码3次。您需要为脚本注册使用不同的密钥:
public static void executeJSFunction(string key, string jsFunction)
{
var page = HttpContext.Current.Handler as Page;
ScriptManager.RegisterStartupScript(page, page.GetType(), key, jsFunction, true);
}
BLL.Common.executeJSFunction("Exec1", "DoSomething();");
BLL.Common.executeJSFunction("Exec2", "DoSomething();");
BLL.Common.executeJSFunction("Exec3", "DoSomething();");
在此处查看更多信息: http://msdn.microsoft.com/en-us/library/bb310408.aspx
答案 3 :(得分:2)
在每个executeJSFunction方法调用上使用不同的RegisterStartupScript方法的键参数值。您可以使用:ScriptManager.RegisterStartupScript(page, page.GetType(), Guid.NewGuid().ToString(), jsFunction, true);
答案 4 :(得分:2)
我相信您的问题是由于每次调用RegisterStartupScript
函数时传递相同的'key'参数(“Exec”)而引起的。
答案 5 :(得分:0)
如果我们需要从c#多次调用javascript函数,我们必须更改关键参数(第3个参数),因为浏览器会将其视为同一个请求而不会处理该请求。请考虑以下内容LOC
var key="firstRequest";
var page = HttpContext.Current.Handler as Page;
ScriptManager.RegisterStartupScript(page, page.GetType(), key, "FunctionName()",true);
现在我们必须更改密钥以再次调用相同的函数,
key="secondRequest";
var page = HttpContext.Current.Handler as Page;
ScriptManager.RegisterStartupScript(page, page.GetType(), key, "FunctionName()",true);