ASP.NET DefaultButton и MasterPages - PullRequest
       34

ASP.NET DefaultButton и MasterPages

5 голосов
/ 23 мая 2011

На моем сайте у меня есть функция поиска на главной странице (там нет кнопки по умолчанию, также нет формы). на странице содержимого у меня есть логин, там я использую панель asp с кнопкой default. но когда я нажимаю кнопку ввода в текстовом поле для входа, мой сайт продолжает идти к обработчику событий поиска ... В чем может быть причина?

Код:

//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 нашел решение: необходимо использовать Button, а не LinkButton. Тогда все должно быть в порядке ...

Ответы [ 3 ]

2 голосов
/ 24 мая 2011

Нашел проблему, я думаю, что необходимо использовать Button, а НЕ LinkButton. Тогда все должно быть в порядке.

2 голосов
/ 23 мая 2011

Вам просто нужно установить кнопку по умолчанию на странице загрузки страницы:

Вы можете получить доступ к кнопке, используя метод 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
0 голосов
/ 26 июля 2011

В разметке любых страниц, которые загружают ваш контроль входа, вам нужно обновить HTML в двух местах.

Сначала в теге формы страницы необходимо установить кнопку по умолчанию.См. Ниже, как я придумал имя.

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

(Наименование: часть ucLogin перед знаком доллара должна быть идентификатором вашего элемента управления входом, как указано ниже на вашей странице. BtnSubmitpart должен быть идентификатором кнопки, так как она названа в 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>

Это должно сделать это для вас.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...