我有一个只有文本框和按钮的用户控件。当我单击该按钮时,该页面会回发,但该按钮不会出现在Request.Form的AllKeys属性中。页面加载后,如果我再次单击该按钮,它会出现在AllKeys属性中。
在下一次尝试时,第三次点击将没有按钮,但第四次点击将拥有该按钮。
我不知道我错过了什么或如何处理这个问题。为什么我的asp:Button只会在每次点击后回发一个?
控制代码:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="SearchControl.ascx.cs" Inherits="controls.SearchControl" %>
<table style="margin: 0 auto">
<tr>
<td style="vertical-align:middle">
<b>Search ID</b>
<asp:TextBox ID="txtSearchID" AutoPostBack="true" runat="server" Width="100px"></asp:TextBox>
<asp:Button ID='btnLoadDetails' OnClick="Search" runat="server" Text='Load Details' />
</td>
</tr>
</table>
控制代码背后:
public event EventHandler onLoad;
protected virtual void OnLoad(EventArgs e)
{
if (onLoad != null)
{
onLoad(this, e);
}
}
protected void Page_Load(object sender, EventArgs e)
{
if ( !IsPostBack )
{
if ( Request["searchID"] != null && Conversion.StringToInt( Request["searchID"].ToString() ) > 0 )
{
txtSearchID.Text = Request["searchID"].ToString();
}
}
else
{ // Used to see if teh button appears in Request.Form
String test = Request.Form[btnLoadDetails.ClientID];
}
}
protected void Search(object sender, System.EventArgs e)
{
if (txtShopperID.Text.Trim().Length > 0)
{
OnLoad(new EventArgs());
}
}
页码:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="SearchPage.aspx.cs" Inherits="SearchPage" %>
<%@ Register TagPrefix="search" TagName="searchControl" Src="controls/SearchControl.ascx" %>
<search:searchControl id="searchControl" OnLoad="btnSearch_Click" runat="server" />
<br />
<div id='divResultInformation' runat="server"></div>