1

これはASP.Netについてこれまでに尋ねられた中で最も単純な質問でなければならないことを私は知っていますが、私は困惑しています。訪問者が名前や住所などを入力するフォームがあります。次に、[送信]ボタンのPostBackUrlプロパティを使用して、そのフォームを別のページにPOSTします。このページでは、フィールドがすべて新しい非表示フィールドに再形成されます。 Paypalに再度投稿されました。

私の問題は、訪問者が元のページに入力した値を取得できないことです。「runat='server'」を入力すると、ASP.NetはコントロールのIDを完全に変更するため、アクセス方法がわかりません。POSTedフォームで試してみたところRequest.Form["_txtFirstName"]、nullになりました。それから試し((TextBox)PreviousPage.FindControl("_txtFirstName")).Textてみましたが、それもヌルでした。私はそれらのバリエーションを試しました。これらのコントロールをどのように取得するのか理解できません。なぜこのようなものはそれほど難しい必要があるのですか?

4

3 に答える 3

0

最初のページのTextBoxコントロールの名前は何ですか?clientIdは使用せず、FindControlを呼び出すときに宣言されているIDを使用します。したがって、ID = "TextBox1"という名前の場合は、以下のコードを使用して検索します。

Page.PreviousPageを見逃したことを除けば、2番目のアプローチは問題ないように見えます。ただし、結果に影響はありません。トレースをオンにしましたか?

これは、ターゲットページに配置されたドキュメントの標準構文です...

if (Page.PreviousPage != null)
{
    TextBox SourceTextBox = 
        (TextBox)Page.PreviousPage.FindControl("TextBox1");
    if (SourceTextBox != null)
    {
        Label1.Text = SourceTextBox.Text;
    }
}
于 2010-05-13T07:58:56.230 に答える
0

ASP.NETでは、コントロールがサーバー側のコントロールである場合、レンダリングされたものではなく、コーディング時に指定されたIDで呼び出すだけです。

マークアップ:

<input type="text" id="myId" runat="server" />

背後にあるコード:

string controlValue = myId.Value;
于 2010-05-13T07:59:57.033 に答える
0

MasterPagesを使用していますか?その場合は、コンテンツプレースホルダー内のコントロールを検索する必要があります。

ContentPlaceHolder placeholder = (ContentPlaceHolder)Page.PreviousPage.Master.FindControl("ContentPlaceHolder1");

TextBox previousPageTextBox = (TextBox)placeholder.FindControl("TextBox1");
于 2010-05-13T08:08:17.193 に答える