[英]ASP.NET DefaultButton and MasterPages
在我的網站中,我在母版頁中有一個搜索功能(沒有設置默認按鈕,也沒有在窗體中)。 在一個內容頁面,我有一個登錄,我使用帶有defaultbutton的asp面板。 但是當我點擊登錄文本框中的Enter然后我的網站繼續前往搜索事件處理程序......可能是什么原因?
一些代碼:
//on content page
protected void Button1_Click(object sender, EventArgs e)
{
Response.Write(Button1.Text);
}
<asp:Panel ID="pnl1" runat="server" DefaultButton="Button1">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox>
<asp:LinkButton ID="Button1" runat="server" Text="Button1" OnClick="Button1_Click" />
</asp:Panel>
//on master page:
protected void btnSearch_Click(object sender, EventArgs e)
{
if (!txtSearch.Text.Equals(""))
{
Response.Redirect("searchresults.aspx?search=" + txtSearch.Text);
}
}
<div id="searchbar">
<asp:TextBox ID="txtSearch" CssClass="searchbar-field" runat="server"></asp:TextBox>
<asp:Button ID="btnSearch" CssClass="searchbar-btn" runat="server" Text="Zoek" OnClick="btnSearch_Click" />
</div>
確定找到了解決方案:需要使用Button
而不是LinkButton
。 那應該沒問題......
您只需在頁面加載頁面上設置默認按鈕:
您可以使用面板的FindControl方法訪問該按鈕(這是VB)。
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
Me.Form.DefaultButton = pnl1.FindControl("Button1").UniqueID
End Sub
發現問題,我認為需要使用Button
和NOT LinkButton
。 那應該沒問題。
在加載登錄控件的任何頁面的標記中,您需要在兩個位置更新html。
首先,在頁面的表單標簽中,您需要設置默認按鈕。 請參閱下文,了解我如何提出名稱。
<form id="form1" runat="server" defaultbutton="ucLogin$btnSubmit">
(命名:美元符號之前的ucLogin部分需要是您的登錄控件的ID,如在頁面中進一步聲明的那樣.btnSubmit部分需要是按鈕的ID,因為它在登錄控件的html中命名)
接下來,您需要在面板中包裝登錄控件的聲明,並設置它的DefaultButton屬性:
<!-- Login Control - use a panel so we can set the default button -->
<asp:Panel runat="server" ID="loginControlPanel" DefaultButton="ucLogin$btnSubmit">
<uc:Login runat="server" ID="ucLogin"/>
</asp:Panel>
那應該為你做。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.