3

可能重复:
如何从 c# 调用 javascript 函数

有没有办法通过单击 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

4 回答 4

4
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);
}
于 2012-06-28T14:37:31.013 回答
0

我有两种方法可以看到我的头顶:

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

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

我强烈推荐第一个,但第二个是一个选项,具体取决于您的环境。

于 2012-06-28T14:36:39.750 回答
0

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

在 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.
}
于 2012-06-28T14:45:05.693 回答
0

如果我理解正确,您想单击按钮,让一些 javascript 执行它的操作,然后返回服务器端,执行 C# 代码并通过执行一些 javascript(再次在客户端上)完成它。

假设我做对了,那么您将不得不做 3 件事。

首先,添加 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,请记住放置它的位置,因为不会刷新整个页面。在这种情况下,将其放在更新框架内。

现在的顺序是: - click -> yourfunction() -> C# code -> yoursecondscript

希望这可以帮助....

于 2012-06-28T14:49:05.940 回答