ASP.NET DefaultButton 和 MasterPages

发布于 2024-11-09 08:22:46 字数 1204 浏览 0 评论 0原文

在我的网站中,我在母版页中有一个搜索功能(那里没有设置默认按钮,也没有在表单中)。在内容页面中,我有一个登录,在那里我使用带有默认按钮的 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>

OK找到了解决方案:需要使用Button而不是LinkBut​​ton。那么应该就可以了...

In my site i have a search function in the master page (no defaultbutton set there, also not in form). in a content page, i have a login, there i use a asp panel with defaultbutton.
but when i click enter on the login textbox then my site keeps going to the search event handler...
What could be the reason?

Some code:

//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 found the solution: It is required to use Button and not LinkButton. Then it should be alright...

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

终陌 2024-11-16 08:22:46

您只需在页面加载时设置页面上的默认按钮即可:

您可以使用面板的 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

You just need to set the default button on the page on the page load:

You can access the button using the FindControl method of the panel (this is VB).

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

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

End Sub
晒暮凉 2024-11-16 08:22:46

发现问题,我认为需要使用 Button 而不是 LinkBut​​ton。那么应该就可以了。

Found the problem, i think it is required to use Button and NOT LinkButton. Then it should be alright.

微凉徒眸意 2024-11-16 08:22:46

在加载登录控件的任何页面的标记中,您需要在两个位置更新 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>

这应该可以为您完成。

In the markup of any pages that load your login control, you need to update the html in two places.

First, in the page's form tag, you need to set the default button. See below for how I came up with the name.

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

(Naming: The ucLogin part before the dollar sign needs to be the ID of your login control, as declared further down in your page. The btnSubmit part needs to be the ID of the button as it’s named in the login control’s html)

Next, you need to wrap the declaration of your login control in a panel, and set it’s DefaultButton property, as well:

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

That should do it for you.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文