在按钮上执行JavaScript单击代码隐藏

时间:2012-06-28 14:32:50

标签: c# asp.net

  

可能重复:
  How to call javascript function from c#

有没有办法从C#后面的代码中点击按钮调用javascript函数?所以基本上我有一个注册表单,当你点击按钮,然后在后面的代码中处理所有数据,并提交表单。但是我需要执行一些javascript,我需要它在按钮点击和后面的代码中执行。

如下所示:

    protected void btnDoRegister_Click(object sender, System.Web.UI.ImageClickEventArgs e)
    {
         C# code is here doing form processing
         // Now I need to Execute javascript here.
    }

这是可能的,如果是这样的话,我将如何去做?

谢谢!

4 个答案:

答案 0 :(得分:3)

protected void btnDoRegister_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
     C# code is here doing form processing
     // Now I need to Execute javascript here.
     string script = "<script type=\"text/javascript\"> functionToExecute(); </script>";
     ClientScript.RegisterClientScriptBlock(this.GetType(), "myscript", script);
}

答案 1 :(得分:0)

我有两种方式可以看到我的头脑:

首先是在javascript端进行一些AJAX轮询。它可以通过rest api或其他东西轮询它需要进行的更改,并且您的c#代码可以更新该更改列表。

第二种是使用javascript socket io实现并维护持久连接。

我强烈推荐第一个,但第二个是根据您的环境选择。

答案 2 :(得分:0)

由于javascript在客户端(浏览器)上执行,因此无法在服务器上执行javascript。你可以在回发后执行javascript,但很少需要它。通常,Javascript在客户端执行,并在服务器接收到请求并在服务器上执行之前执行。 这样你就有两个绑定了btnDoRegister的事件,一个在客户端执行,而ohter在服务器上执行。

在Page_Load上用按钮绑定javascript事件。

代码背后

btnDoRegister.Attributes.Add("onclick", "funForButton();");

在aspx HTML中

<script language="javascript" type="text/javascript">     
function funForButton()
{
   alert("About to send request to server");
}

</script>

您已有的服务器事件

protected void btnDoRegister_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
     C# code is here doing form processing
     // Now I need to Execute javascript here.
}

答案 3 :(得分:0)

如果我理解正确,你想点击按钮,让一些javascript做它的事情,然后返回服务器端,做C#代码并完成它执行一些javascript(在客户端再次)。

让我们假设我做对了,那么你将不得不做三件事。

首先,添加OnClientClick =“return yourfunction();”到您的aspx页面中的按钮。根据您是否要执行服务器端代码,请确保javascript中的yourfunction()返回false或true。

然后在btnDoRegister_Click中编写c#代码。最后,在会话变量中添加一个javascript调用,并在aspx代码中使用它。

例如: C#

String newScript = ""

If (Session("yourscript") = Nothing) { Session("yourscript") = "" }

newScript = String.Format("<script type=text/javascript>")

newScript = String.Format("{0}yoursecondscript()", newScript)

newScript = String.Format("{0}</script>", newScript)

Session("yourscript") = newScript

然后在您的aspx页面中添加页面中的某个位置:

<%=Session("yourscript")%>

如果您使用的是Ajax,请记住放置它的位置,因为不会刷新整个页面。在这种情况下,请将其放在更新帧内。

现在的顺序是: - 点击 - &gt; yourfunction() - &gt; C#代码 - &gt; yoursecondscript

希望这会有所帮助......