从JavaScript调用ASP.NET EventHandler

我有一个传统的ASP.NET Web窗体。 我们曾经有一个按钮定义如下:

 

在.aspx.cs页面中,我有以下内容:

 protected void myButton_Click(object sender, EventArgs e) { // Do Stuff } 

但是,现在有人决定使用一个奇特的JavaScript框架。 基本上,我只有:

    function someJSFunction() { // Need to execute "myButton_Click" here. }  

如何从这里实际在服务器上执行我的原始方法? 我知道这是一个非常奇怪的问题。 我已经简化了代码,试图直接传达我想要完成的事情。 有人可以告诉我该怎么做?

非常感谢!

你可以写信

 __doPostBack('<%=myButton.ClientID%>','OnClick'); 

或者更好,更不容易出错使用ASP.Net ClientScriptManager

 <%= Page.ClientScript.GetPostBackEventReference(myButton, String.Empty) %>; 

第二个实际上是在__doSubmit下写了__doSubmit ,但是你正在获得ASP.Net框架来为你做。 此外,第一个将回发页面,但第二个也会触发正确的服务器端事件。 它更好地集成到ASP.Net架构中。 要么会工作。

这个最近的SO问题解释了它比我能做得更好(或者更确切地说当时做了)

试试这个:

  

首先,无论你的按钮在做什么,执行该function的实际代码都不应该在按钮后面的代码中; 它应该在按钮后面的代码调用的方法中。 按钮的事件处理程序不应该由按钮以外的任何对象直接使用。 所以你的按钮处理程序应如下所示:

 protected void Button1_Click(object sender, EventArgs e) { CallMyRealMethod(); } 

接下来,查看SignalR 。 ( http://signalr.net )SignalR(简而言之)允许您从您的javascript调用C#方法,从C#调用javascript方法。

使用这两种技术可以使您的代码更具可读性和可维护性。