ASPボタンPostBackUrlに引数を追加するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/204733

  •  03-07-2019
  •  | 
  •  

質問

今のところ、テキストボックスとボタンを使用して検索ページを作成していますが、おそらく後で結果をフィルタリングするためのドロップダウンを作成します。ボタンのPostBackUrlを検索ページ(〜/ search.aspx)に設定しています。テキストボックスの値を検索ページに渡す簡単な方法はありますか?

役に立ちましたか?

解決

ボタンにPostBackUrlが設定されている場合、最初のページの検索ボックスフィールド、およびそのページの他のフォームフィールドは、検索ページに既に投稿されています。秘Theは、search.aspxページの分離コードでそれらにアクセスすることです。

if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}

それは一つの方法です。 search.aspxページの上部でPreviousPageTypeディレクティブを使用するなど、いくつかのショートカットもあります。

<%@ PreviousPageType VirtualPath="~/SourcePage.aspx" %> 

その使用方法の詳細と最初の方法については、こちらをご覧ください:

http://msdn.microsoft.com/en-us/library/ ms178139.aspx

他のヒント

useSubmitBehavior =&quot; true&quot;を使用できる場合があります。そして、メソッド=&quot; get&quot;フォームに。そのようにして、ブラウザの送信動作を使用し、テキストボックスの値をクエリ文字列に追加します

テキストボックスフィールドでEnterキーとkeypressイベントをキャッチすることで、JavaScriptを使用してこれを実現することもできます。これを展開して、テキストボックス内のテキストの検証も実行できます。 (この例では、 jQuery を使用しています)

$(document).ready(function(){
    // Event Handlers to allow searching after pressing Enter key
    $("#myTextBoxID").bind("keypress", function(e){
        switch (e.keyCode){
        case (13):
            // Execute code here ...
            break;
        default:
            break;
        }
    });
});

問題を解決し、前のページは「default.aspx」ですが、コントロールはそのページに存在しません。マスターページを使用しているため、 PreviousPage ではなく Master を選択する必要があります。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If PreviousPage IsNot Nothing Then
      Dim txtBoxSrc As New TextBox
      txtBoxSrc = CType(Master.FindControl("searchbox"), TextBox)
      If txtBoxSrc IsNot Nothing Then
          MsgBox(txtBoxSrc.Text)
      End If
  End If
End Sub

<div class="gsSearch">
    <asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
    <asp:Button ID="searchbutton" runat="server" Text="search" 
         UseSubmitBehavior="true" PostBackUrl="~/search.aspx" />
</div>

VBの知識がなくても、なぜそのコードでnull参照を取得するのかわかりませんが、少し変更を加えてみてください。

FindControlはControl型を返すことを知っています。特定の型にボックス化するのを待つことができます。

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
  If PreviousPage IsNot Nothing Then
      Dim txtBoxSrc As New Control
      txtBoxSrc = PreviousPage.FindControl("searchbox")
      If txtBoxSrc IsNot Nothing Then
          MsgBox((CType(txtBoxSrc, TextBox)).Text)
      End If
  End If
End Sub

<div class="gsSearch">
    <asp:TextBox ID="searchbox" runat="server"></asp:TextBox>
    <asp:Button ID="searchbutton" runat="server" Text="search" 
         UseSubmitBehavior="true" PostBackUrl="~/search.aspx" />
</div>

これはどうですか(vb、ごめんなさい):

codebehindを介してテキストボックスから値を取得し、コントロールのpostbackurlを次のように設定します。

dim textval = SourceTextBox.text
dim myparam = "George"

searchbutton.PostBackUrl = "~/search.aspx?myparam=" & myparam

ボタンのクリックを処理する関数にそれを置くことができますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top