2009-09-01 6 views
2

申し訳ありませんが、別の超基本的なASP.NETの質問です。これはとても恥ずかしい。ASP.NETボタンからHTTP POSTを実行するにはどうすればよいですか?

私はどのように上の記事読んでいます:第2のアプローチでは、ASP.NETページ

間で値を渡すと、彼らはボタンをフックし、POSTを使用して別のページにユーザーを向ける示唆しています。私はこれをする方法を知らない。 HTTP POSTはどのように行うのですか?

「ソース・ページがターゲット・ページにナビゲートするためにHTTPのPOSTアクションを使用するときは、対象ページ内のFormコレクションから投稿の値を取得することができます。」

これは、私は新しいページにユーザーを送信しています方法です:

protected void btnSubmitForPost_Click(object sender, EventArgs e) 
    { 
     Response.Redirect("GetViaPost.aspx"); 
    } 

EDIT 最終的な解決策: あなたはASP.NETのWebフォームを使用することができます。次の手順を実行します。最初のページで、コントロールを作成し、ユーザーを新しいページに送信するボタンを作成します。このボタンからクリックイベントを処理します。以下に述べるように、Response.Redirect()ではなく、ServerResponse = falseのServer.Transferを使用します。 Response.Redirectを使用すると、投稿データは消去されます。私はフォームやその他のアクションを指定する必要はありませんでした。

+0

恥ずかしがり屋ではありません。あなたは学ぶために質問する必要があります。 – womp

+0

ここでの問題の一部は、ASP.NETがデスクトッププログラマー向けに開発するのを容易にするために、多くの標準的なWeb技術を難読化していることです。 ASP.NET MVCはこれを多く修正しましたが、まだ試してみる機会はありませんでした。 –

答えて

1

私はこの権利を読んでいる場合は、これらの答えのすべての質問に欠けている...

あなたが別のAsp.Netフォームから投稿を見ている、とのいずれかの方法は何であります把握したい - 通常のhttp投稿をしています。私が正しいと思っているならば、本や記事はServer.Transferについて別のオプションとしてすでにあなたに伝えているでしょう。

私は右の質問を取得していた場合は、最も簡単な答えはないには、出発点として(ラナ= server属性付き)標準ASP.Netフォームを使用しますが、簡単な標準を使用することですasp.netページに投稿するHTMLフォーム

<form action = "targetpage.aspx" method="post"> 
    ...some form fields here 
    <input type = "submit"> 
</form> 
+0

ASP.NETですべての開発を行っている場合は、フォームを入れ子にする必要があります。私はこれがあなたのトラブルを引き起こすだろうと推測しています。 –

+0

標準のasp.net形式でこれを行うことができますか?または誰もしない何かasp.net webformとHTTP POSTですか? – MedicineMan

+0

彼は基本的な作業の仕方に戻ってほしいと思うなら、彼はASP.NET MVC(私が愛している)をチェックアウトするべきです。あなたの答えがデフォルトの実装であるところ。それ以外の場合は、Webフォームと便利なサーバーコントロールの使い易さが欠けています。 –

2

ボタンをクリックすると、前回チェックしたときに巨大な<form />タグに含まれているように、ページ全体のフィールドがデフォルトで投稿されています。このようなボタンをクリックすると、あなたがCAあなたGetViaPost.aspxのページで次に

protected void btnSubmitForPost_Click(object sender, EventArgs e) 
{ 
    Server.Transfer("GetViaPost.aspx", true); 
} 

string MyPostedValue = Request.Form["MyFormField"]; 

*あなたの質問であなたの更新ごととして編集、Server.Transferを(へのResponse.Redirect()を変更します)。このようなn送信ページから渡されたフォーム/クエリ文字列変数を次のように取得します。

string MyPostedValue = Request.Form["MyFormField"]; 
+0

どうすればブラウザを新しいページに移動させるためのボタンが表示されますか? – MedicineMan

+0

Response.RedirectまたはServer.Transferのいずれかを使用します。 –

+0

ボタンのクリックイベントでServer.Transfer( "mypage.aspx")を試すことができます。ボタンのデフォルトの動作は、あなたが作業しているのと同じページに投稿することです。 Server.Transferを使用すると、私が覚えている限り、あるページから別のページに値が保持されます。 –

0

ASP.NETボタンは常にPOSTを実行します。ボタンのPostBackUrlプロパティを使用して、ボタンが投稿するページを設定できます。これを空白のままにすると、そのボタンは同じページにポストバックします。

詳細についてはthis articleをご覧ください。

+0

どのようにですか?私はまだイベントハンドラを設定しますか? – MedicineMan

+0

もう少し詳しく説明するために私の答えを編集しました。別のページにnoをポストすると、ボタンハンドラのイベントハンドラは作成されません。ページロードイベントを使用するだけです。 –

1

コードビハインドでボタンのクリックイベントに接続する場合は、ボタンをクリックします。それは起こるPOSTbackです。

runat="server"を持つコントロールは、コードビハインド内のID(およびそれらに設定された値)でアクセスできます。

他のページにデータを投稿する場合、いくつかのオプションがあります。

クエリ文字列、セッション、Cookie、およびビューステート。

更新されたレスポンスが与えられている基本的な例(エラー処理なし)。そして、GetViaPostページにあなたがでそれを引き出すことができ

int someId = int.Parse(txtBoxOnThePage.Text); 
Response.Redirect(string.Format("GetViaPost.aspx?myId={0}", someId)); 

:リダイレクトされる可能性があります

HttpContext.Current.Request.QueryString["myId"] 

http://www.asp.net/learn/することは学習のこの種の情報とチュートリアルの驚くほど良いソースです。

関連する問題