Controls like the LinkButton control in web forms all provide a postback mechanism to post data to the server through a client-side JavaScript method called __doPostBack (or alternatively WebForm_DoPostBackWithOptions).  This method takes the unique ID of the control as the first argument, and a combination of command name and/or argument as the second parameter (concatenated together if desired).  The recipient of this post is the IPostBackEventHandler.RaisePostBackEvent method.  As long as the control targeted defines this interface, it will receive that it was the target of a postback to the server.  Internally, it knows this by using the __EVENTTARGET form key, and the __EVENTARGUMENT form key for the command name and/or arg.

This interface is not just for controls, but a quick option you can use for a user control.  This way, if you need to have the user control postback and handle the postback event directly, this approach can be very handy.  Simply define a user control like the following:

public partial class MyUserControl: System.Web.UI.UserControl, IPostBackEventHandler

Handle the RaisePostBackEvent like so:

public void RaisePostBackEvent(string eventArgument)
if (eventArgument.Contains(“Select”))
//Process select command

And inside the user control, have a reference to this somewhere.

__doPostBack(‘<%= this.UniqueID %>’, ‘Select’);

The this.UniqueID reference means that inside the user control, grab its unique ID.  It can be used outside of the user control by referencing userControlInstance.UniqueID too.  So there are many options here.

MSDN documentation can be found here: