第一步:在Web界面上添加一个LinkButton,并把它隐藏起来,这里的隐藏不是把Visibe设为false,而是把LinkButton的Text设为空。
第二步:覆写父类方法
using System.Reflection; protected override void OnLoad(EventArgs e) { base.OnLoad(e); if (this.IsPostBack) { if ((Request.Form["__EVENTTARGET"] != null) && (Request.Form["__EVENTTARGET"] != "")) if (Request.Form["__EVENTTARGET"].Substring(0, 3) == "CE_") { String strEventArgument = Request.Form["__EVENTARGUMENT"]; Type type = this.GetType(); MethodInfo mi = type.GetMethod(Request.Form["__EVENTTARGET"], BindingFlags.Instance | BindingFlags.NonPublic); if (mi != null) mi.Invoke(this, new object[] { strEventArgument }); } } }
第三步:在前端Javascript中调用: __doPostBack("CE_doClientEvent",Argument);其中"CE_doClinetEvent"为后端自定的方法(前缀“CE_”为自定,但必须与“Request.Form["__EVENTTARGET"].Substring(0, 3) == "CE_"”中的“CE_”保持一致,"Argument"为自带的一个参数,可以用于传值。注意,即使Argument为空,即__doPostBack("CE_doClientEvent",""),后端方法中也要有参数。如: protected void CE_doClinetEvent(string AArgument) { response.Write("这是一个测试"); }