C# 如何在回发时捕获并触发用户控件的自定义事件

C# 如何在回发时捕获并触发用户控件的自定义事件,c#,javascript,asp.net,user-controls,C#,Javascript,Asp.net,User Controls,我有一个用户控件(例如foo.ascx),它不使用任何asp.net控件。我没有按钮点击事件或任何我可以依赖的东西。因此,以下选项不适用: void Page_Load(object sender, EventArgs e) { MyButton.Click += MyButton_Click; // <-- I can't do this, there are no asp.net controls } void MyButton_Click(object sender, Even

我有一个用户控件(例如foo.ascx),它不使用任何asp.net控件。我没有按钮点击事件或任何我可以依赖的东西。因此,以下选项不适用:

void Page_Load(object sender, EventArgs e) {
  MyButton.Click += MyButton_Click; // <-- I can't do this, there are no asp.net controls
}

void MyButton_Click(object sender, EventArgs e) {
    OnItemSelected("foo"); // fire my custom event
}
void页面加载(对象发送方,事件参数e){

MyButton.Click+=MyButton\u Click;//如果我是正确的,并且您正在使用ASP.NET WebForm,那么您需要为您的用户控件实现接口。此接口定义ASP.NET服务器控件必须实现的方法(RaisePostBackEvent),以处理回发事件

  // Define the method of IPostBackEventHandler that raises your server side events. 
  public void RaisePostBackEvent(string eventArgument){
     OnItemSelected("foo"); // fire my custom event
  }
然后,在客户端,您将能够通过调用以下代码来执行服务器端事件:

__doPostBack(UniqueID, 'eventArgument');
where UniqueID—用户控件.eventArgument的唯一ID可以为空,也可以是您想要的任何值(例如json格式的对象等)


这就是如何为自定义服务器控件实现服务器端回发事件。

如果我是正确的,并且您使用的是ASP.NET WebForm,那么您需要为您的用户控件实现接口。此接口定义ASP.NET服务器控件必须实现的方法(RaisePostBackEvent)以处理回发事件

  // Define the method of IPostBackEventHandler that raises your server side events. 
  public void RaisePostBackEvent(string eventArgument){
     OnItemSelected("foo"); // fire my custom event
  }
然后,在客户端,您将能够通过调用以下代码来执行服务器端事件:

__doPostBack(UniqueID, 'eventArgument');
where UniqueID—用户控件.eventArgument的唯一ID可以为空,也可以是您想要的任何值(例如json格式的对象等)


这就是为自定义服务器控件实现服务器端回发事件的方式。

JavaScript无法本机调用服务器端事件。您必须创建
WebMethod
或转换为MVC才能从JavaScript调用服务器端代码。JavaScript无法本机调用服务器端事件。您必须e使用
WebMethod
或转换为MVC,以便从JavaScript调用服务器端代码。