【发布时间】:2013-09-30 07:26:02
【问题描述】:
在查找导致回发的控件时,<asp:ImageButton> 和<asp:Button> 是例外,因为它们不使用__doPostBack 函数。 this Article 也支持这一事实。
那么,正如上面提到的文章使用了一个 hiddenField,Javascript 代码作为解决方法,有没有更优雅的方法来做到这一点??
我想要的是在使用 Button/ImageButton 控件时,我仍然想使用 Request.Form["__EVENTTARGET"] 以某种方式获取控件名称。有什么我需要知道的设置吗?
或
Button / ImageButton 的任何属性都会使其使用__doPostBack 函数??
下面是我正在尝试的代码::
EventTargets.aspx
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeFile="EventTargets.aspx.cs" Inherits="EventTargets" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:Button ID="btnAdd" runat="server" Text="Add"
ClientIDMode="Static"/>
</asp:Content>
还有我的cs文件的完整代码:
EventTargets.aspx.cs
public partial class EventTargets: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (IsPostBack)
{
string CtrlID = string.Empty;
// for Button Controls, this is always string.Empty
// and therefore it doesn't goes inside IF statement
if (Request.Form["__EVENTTARGET"] != null &&
Request.Form["__EVENTTARGET"] != string.Empty)
{
CtrlID = Request.Form["__EVENTTARGET"];
}
}
}
}
【问题讨论】:
-
您可以通过将
Button控件的UseSubmitBehavior属性设置为false来强制Button控件使用javascript 提交到服务器。这样,您将在代码隐藏中拥有__EVENTTARGET值。但这不适用于ImageButton。