【问题标题】:ASP.NET DefaultButton and MasterPagesASP.NET DefaultButton 和 MasterPages
【发布时间】:2011-05-23 13:23:38
【问题描述】:

在我的网站中,我在母版页中有一个搜索功能(那里没有设置默认按钮,也没有在表单中)。在内容页面中,我有一个登录名,在那里我使用了一个带有默认按钮的 asp 面板。 但是当我在登录文本框上单击输入时,我的网站会继续进入搜索事件处理程序...... 可能是什么原因?

一些代码:

//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。那应该就没事了……

【问题讨论】:

  • 如果您找到了解决方案,请将其添加为答案并接受它作为解决方案。
  • 我不能为我自己的帖子投票... :p 你能为我做些什么..
  • 你可以接受你自己的帖子作为解决方案。

标签: c# asp.net forms defaultbutton


【解决方案1】:

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

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

【讨论】:

  • 我使用了Page.Form.DefaultButton = pnl1.FindControl("Button1").UniqueID;,但它仍然会转到搜索事件处理程序
  • 是否在页面加载时将焦点设置在搜索框上?在页面加载时在 TextBox1 中设置焦点。
【解决方案2】:

发现问题,我认为需要使用Button 而不是LinkButton。那应该就没事了。

【讨论】:

    【解决方案3】:

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

    这应该为你做。

    【讨论】:

      猜你喜欢
      • 2010-09-09
      • 2014-07-19
      • 1970-01-01
      • 1970-01-01
      • 2012-12-12
      • 2010-09-08
      • 2012-09-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多