asp.net页面如何知道哪个按钮触发了回发?
我正在编写一些代码,这些代码模仿了通过执行与单击触发页面回发的按钮时生成的完全相同的Web请求来对页面进行回发的效果.
问题是来自Web请求的响应与单击按钮时得到的响应不同. 在调查时,我看到即使在执行Web请求时触发并处理了Page_Load事件,也没有执行按钮单击的处理程序(意味着事件未被触发,或者它被触发但未被处理 – 我猜它更有可能是前一种情况). 所以我的问题是 – ASP.NET如何知道点击了什么按钮,以便它可以调用适当的处理程序? 我认为这是通过使用__EVENTTARGET参数完成的 – 我已经在Web请求的帖子正文中正确设置了它,但这没有任何区别. 我查看了解码的__VIEWSTATE参数,但我看不到任何明显的东西. 有人能提供任何进一步的帮助吗 编辑:为了清楚,我不是问如何将单击处理程序添加到Web应用程序. 相反,我正在查看已经有一个按钮单击事件处理程序的应用程序,我想知道asp.net如何从传入的Web请求中找出要调用的按钮单击事件处理程序代码. 解决方法
首先,ASP.NET Button< asp:button>呈现为< input type =“submit”runat =“server”...>表格上的元素.参考回发,与其他控件相比,此按钮的行为有所不同.
点击时< input type =“submit”...>将在没有ASP.NET帮助的情况下自动触发回发(在.htm中尝试).您可以通过查看POST正文的参数来确定单击了哪个按钮.按钮名称及其值(Text prop.)将作为参数发送. __EVENTTARGET不在图片中,应为null.此外,根据规范(单击的那个),参数列表中只有一个按钮控件.所以现在你知道点击了哪个按钮. 那么__EVENTTARGET的用途是什么? 其他控件,例如< asp:DropDownList>它呈现为SELECT,单击时不会触发回发,而只是引发onChange javascript事件.如果要通过SelectedIndexChanged事件在服务器端处理事件,ASP.NET将不得不为您做一些额外的工作.如果为DropDownList设置AutoPostBack = True,ASP.NET将捕获原始onChange JS事件并连接一个自定义__doPostBack JS函数,该函数负责填充__EVENTTARGET并显式提交表单.您现在可以通过检查__EVENTTARGET来确定触发回发的控件. 希望这个对你有帮助 ! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 属性的自定义模型binder
- asp.net-mvc – WebApiConfig.cs和RouteConfig.cs之间的区别
- asp.net-mvc-3 – 当调用Controller.PartialView时,ASP.NET
- asp.net-mvc – Autofac MVC 5 RegisterWebApiFilterProvid
- asp.net – .NET VirtualPathProviders和预编译
- asp.net-mvc – 获取当前用户的角色
- 单元测试 – 单元测试项目不能参考MVC项目
- IE不提供保存ASP.NET表单的密码
- asp.net-mvc – 绑定排除Asp.net MVC不适用于LINQ实体
- asp.net – Visual Studio可以在新的调试会话中重新启动IIS
- asp.net-mvc – 升级到.Net 4.5和osFamily 3后无
- ASP.NET 2.0:如何将asp:Menu绑定到SqlDataSour
- ASP.NET会话意外结束
- asp经典 – ASP检查请求方法
- asp.net-mvc-3 – 如何在ASP.NET MVC3控制器中访
- asp.net-mvc – 如何在URL中没有控制器名称的单个
- asp.net-mvc-3 – 如何删除不需要的WWW-Authenti
- asp.net-mvc – ModelState.IsValid不排除必需的
- 在ASP.NET应用程序的global.asax中处理Applicati
- ASP.NET MVC5:还原程序包、多设备测试