关于用__doPostBack在前端调用后端的方法

第一步:在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("这是一个测试"); }

posted @ 2013-09-29 16:45  wemzhugo  阅读(669)  评论(0)    收藏  举报