100分求:页面按钮事件在PostBack的PageLoad中怎么获取到触发事件
100分求:页面按钮事件在PostBack的PageLoad中如何获取到触发事件
现在有个需求,必须做系统级的大调整。
在按钮事件触发后,在执行其他的代码前作一个判断,不同的按钮对应不同的参数。如同按钮权限一样,一个不同的按钮对应不同的权限。如果在每个按钮事件中去增加代码,其工作量可想而知。而且这样的大动作,不到万不得已决不能做。
现在有一个思路。在按钮触发后,回刷页面的PageLoad中是否能够获取到与按钮相关的信息,比如,当前触发的事件名称,按钮名称等等,能在当前Page下有唯一确定的标识。这些标识可以一次性的初始化到数据库,做为基数数据配置,这样就可以在页面的基类的Load方法中统一处理。不必每个页面去修改过代码。
或者其他的思路……
会的帮忙出出主意,不会的帮忙顶顶也行。谢谢。
------解决方案--------------------
测试下那个****收音机
下载一次,就能不断自动更新,欢迎使用《Csdn收音机》!
------解决方案--------------------
要做到按钮级别的权限管理?可以直接在页面显示的时候就将给用户没有权限的按钮不显示啊。
另外你说的如何取得回发事件源,试一下可以直接从_EVENTTARGET行不,当然肯定不可能和服务端的控件名字一样了,自己稍微处理一下。我也没试过。。。有兴趣可以试一下
最后还不行就看看page的源码看看微软是怎么根据_EVENTTARGET来获得具体的回发事件的信息的吧!
------解决方案--------------------
现在有个需求,必须做系统级的大调整。
在按钮事件触发后,在执行其他的代码前作一个判断,不同的按钮对应不同的参数。如同按钮权限一样,一个不同的按钮对应不同的权限。如果在每个按钮事件中去增加代码,其工作量可想而知。而且这样的大动作,不到万不得已决不能做。
现在有一个思路。在按钮触发后,回刷页面的PageLoad中是否能够获取到与按钮相关的信息,比如,当前触发的事件名称,按钮名称等等,能在当前Page下有唯一确定的标识。这些标识可以一次性的初始化到数据库,做为基数数据配置,这样就可以在页面的基类的Load方法中统一处理。不必每个页面去修改过代码。
或者其他的思路……
会的帮忙出出主意,不会的帮忙顶顶也行。谢谢。
------解决方案--------------------
测试下那个****收音机
下载一次,就能不断自动更新,欢迎使用《Csdn收音机》!
------解决方案--------------------
要做到按钮级别的权限管理?可以直接在页面显示的时候就将给用户没有权限的按钮不显示啊。
另外你说的如何取得回发事件源,试一下可以直接从_EVENTTARGET行不,当然肯定不可能和服务端的控件名字一样了,自己稍微处理一下。我也没试过。。。有兴趣可以试一下
最后还不行就看看page的源码看看微软是怎么根据_EVENTTARGET来获得具体的回发事件的信息的吧!
------解决方案--------------------
- HTML code
<asp:Button ID="Button1" runat="server" Text="Button" onclick="Button1_Click" /> <asp:Button ID="Button2" runat="server" Text="Button" onclick="Button1_Click" /> <asp:Button ID="Button3" runat="server" Text="Button" onclick="Button1_Click" />
------解决方案--------------------
asp:Button 生成的是 submit, 所以不会调用 __doPostback 所以Page_Load里也不能用
"__EVENTTARGET"获得Button ID。。。得考虑别的办法。。。
------解决方案--------------------
- C# code
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { var request = this.Request; var ctrl = GetPostBackControl(this); var id = ctrl.ID; } } public static Control GetPostBackControl(Page page) { Control control = null; string ctrlname = page.Request.Params.Get("__EVENTTARGET"); if (ctrlname != null && ctrlname != String.Empty) { control = page.FindControl(ctrlname); } else { foreach (string ctl in page.Request.Form) { Control c = page.FindControl(ctl); if (c is System.Web.UI.WebControls.Button) { control = c; break; } } } return control; }
------解决方案--------------------
直接把事件名称用URL传回去咯,其实跟楼上的在根本上差不多
------解决方案--------------------
4楼的方法比较实在...
------解决方案--------------------
好像使用委托调用(多路)---可以的。
想不起来了。 帮你顶
------解决方案--------------------
恩 ,这个可以。
------解决方案--------------------
用aop将权限验证方法注入到按钮方法
------解决方案--------------------
6L的方法可以试下
------解决方案--------------------
------解决方案--------------------
不太懂,感觉应该6楼得那个可以