c#多次调用javascript函数无效

时间:2011-11-09 19:42:45

标签: c# javascript asp.net .net

在点击事件中,我调用相同的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和一个更新面板以防万一......

6 个答案:

答案 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”)而引起的。

详情请见此处 - http://forums.asp.net/t/1365260.aspx/1

答案 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);