2011-05-23 10 views
5

En mi sitio tengo una función de búsqueda en la página maestra (no hay un botón predeterminado establecido allí, tampoco en la forma). en una página de contenido, tengo un inicio de sesión, allí utilizo un panel asp con el botón predeterminado. pero cuando hago clic en ingresar en el cuadro de texto de inicio de sesión, mi sitio sigue yendo al controlador de eventos de búsqueda ... ¿Cuál podría ser el motivo?ASP.NET DefaultButton y MasterPages

Algunos código:

//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> 

OK encontró la solución: Se requiere el uso de Button y no LinkButton. Entonces debería estar bien ...

+0

si encontraste la solución, agrégala como respuesta y acéptala como la solución. –

+0

No puedo votar por mi propia publicación ...: p ¿Puede hacerlo por mí? – Ozkan

+1

Sin embargo, puede aceptar su propia publicación como la solución. –

Respuesta

2

Sólo tiene que establecer el botón predeterminado en la página de la carga de la página:

Puede acceder al botón utilizando el método FindControl del panel (esto es VB) .

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load 

    Me.Form.DefaultButton = pnl1.FindControl("Button1").UniqueID 

End Sub 
+0

Utilicé 'Page.Form.DefaultButton = pnl1.FindControl (" Button1 "). UniqueID;' Pero todavía va al controlador de eventos de búsqueda – Ozkan

+0

¿El foco se está configurando en el cuadro de búsqueda en la carga de la página? Establezca el foco en TextBox1 en la carga de la página. –

+0

no, no ayudó, vea mi primera publicación edité – Ozkan

2

encontrado el problema, creo que es necesario para utilizar Button y NO LinkButton. Entonces debería estar bien.

0

En el marcado de las páginas que cargan el control de inicio de sesión, debe actualizar el html en dos lugares.

Primero, en la etiqueta de formulario de la página, debe establecer el botón predeterminado. Vea a continuación cómo se me ocurrió el nombre.

<form id="form1" runat="server" defaultbutton="ucLogin$btnSubmit"> 

(Naming: La parte ucLogin antes del signo dólar necesita ser el ID de su control de acceso, según lo declarado más abajo en la página de la parte btnSubmit debe ser el identificador del botón como se le llama en. html del control de acceso)

Después, usted necesita para envolver la declaración de su control de acceso en un panel, y establecer que es propiedad DefaultButton, así:

<!-- 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> 

Eso debería hacerlo por usted.