0

私はこの問題の解決策を見つけるために2日間を費やしましたが、ExpertExchangeを試しても、解決策を得ることができません。私はASP.Net(C#を使用)の非常に初心者のプログラマーであり、文字列/URL投稿を使用したくありません

tbSearchStringというテキストボックスを持つMasterPageがあります。これは、ユーザーが何かを入力してから別のページへのポストバックを実行できる単純なボックスですSearchResults.aspxしたがって、MasterPageを使用するDefault.aspxなどの他のページもあります。

私はほぼすべてを試し、ネット上で見つけたほぼすべての投稿を読みましたが、変数が常にNullであるかどうかは問題ではありません。

searchResults loadpageイベントでこのコードを使用しましたが、ページのテキストボックスに値を入力し、ボタンをクリックしてSearchResultsページにポストバックしても、これらの変数はすべてnullです。 searchResultsページで送信します。

SearchResultsバックエンドページ

protected void Page_Load(object sender, EventArgs e)
{

    TextBox SearchString;
    TextBox SearchString2;
    TextBox SearchString3;
    TextBox SearchString5;   

    if (Page.PreviousPage != null)  //This is true on every test
    {

        SearchString = (TextBox)Page.PreviousPage.Master.FindControl("tbSearchString");
        SearchString2 = (TextBox)PreviousPage.Master.FindControl("tbSearchString");
        SearchString3 = (TextBox)Master.FindControl("tbSearchString");
        TextBox LoginControlx = (TextBox)PreviousPage.FindControl("Form1");

       if (LoginControlx != null)
        {
          TextBox SearchString4 = (TextBox)LoginControlx.FindControl("tbSearchString");
        }
  }

MainWebsite.Masterページコード

<asp:TextBox ID="tbSearchString" runat="server"></asp:TextBox>
                <asp:Button ID="btnSearch1" runat="server" Text="Search" PostBackUrl="~/SearchResultRentalEquiptment.aspx" />

CSバックエンドページに何もありません

したがって、Default.aspxページで

特別なことは何もありませんマスターページといくつかのテキストコンテンツだけで、テキストボックスにテキストを入力するとSearchResultsページに移動し、デフォルトまたは他のページのテキストボックスコントロールからdarn値を取得できません。

賢い人は何と言いますか?

4

3 に答える 3

1

フォームを検索結果フォームにリダイレクトするにはどうすればよいですか? Response.redirect を使用している場合、Page.PreviousPage.Master.FindControl の値は null になります。Server.Transferを使用して、動作するかどうかを確認してください。

于 2012-12-06T16:00:38.220 に答える
0

1 つの方法を次に示します。

これがマスター ページ コードであると仮定します。

<asp:TextBox ID="searchbox" runat="server" /><br />
<asp:Button ID="sendSearch" runat="server" PostBackUrl="~/Results.aspx" Text="Search" />

結局のところ、それはすべてについてHTTP POSTなので、ターゲットページでは次のようになりますResults.aspx PageLoad

protected void Page_Load(object sender, EventArgs e)
{
    string _foo = Request.Form[this.Master.FindControl("searchbox").UniqueID];
}

ひ……

于 2012-12-05T02:02:35.307 に答える
0

セッションを確認してください。あるページから別のページにデータを取得する必要がある場合は、常にこれを使用します。現在、完全な例を書き出すことはできませんが、頭の中で次のように動作するはずです。

//page1.aspx:

protected void btnSubmit_Click(object sender, EventArgs e)
{
     string greetingString = "Hello";
     Session["MyValue"] = greetingString;
     Response.Redirect("page2.aspx");
}

//page2.aspx:

protected void Page_Load(object sender, EventArgs e)
{
     Response.Write(Session["MyValue"].ToString());  //prints "Hello"
}
于 2012-12-05T07:06:59.597 に答える