从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方法。
使用这两种技术可以使您的代码更具可读性和可维护性。