5

私のサイトでは、マスターページに検索機能があります(デフォルトボタンは設定されておらず、フォームにもありません)。コンテンツ ページにログインがあり、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>

OK で解決策が見つかりましButtonLinkButton。それなら大丈夫なはず…

4

3 に答える 3

2

ページの読み込み時に、ページにデフォルトのボタンを設定するだけです。

パネルの 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
于 2011-05-23T13:28:21.573 に答える
2

問題が見つかりました。使用する必要があると思いますButtonand NOT LinkButton。それなら大丈夫なはずです。

于 2011-05-24T06:55:11.570 に答える
0

ログインコントロールをロードするページのマークアップでは、2か所でhtmlを更新する必要があります。

まず、ページのフォームタグで、デフォルトのボタンを設定する必要があります。私が名前を思いついた方法については、以下を参照してください。

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

(命名:ドル記号の前のucLogin部分は、ページのさらに下で宣言されているように、ログインコントロールのIDである必要があります。btnSubmit部分は、ログインコントロールのhtmlで指定されているボタンのIDである必要があります)

次に、ログインコントロールの宣言をパネルでラップし、その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>

それはあなたのためにそれをするはずです。

于 2011-07-26T17:03:14.933 に答える