どのように私はasp.net Webフォームで郵便/リダイレクト/取得パターンを実装できますか?

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

  •  06-09-2019
  •  | 
  •  

質問

だから私はPRGパターンの基本を理解しています。しかし、私は、ページの「取得」のインスタンスが利用可能な任意のデータを作るための技術に遭遇していない。

たとえば、私は、ポストバックを開始した彼らの行動に応じて、ユーザーにさまざまなフィードバックメッセージを表示したい場合があります。

私は、クエリ文字列パラメータとして識別子を送信して行ってきました。これは正常に動作しますが、それはブックマークの問題を紹介し、それは非常にうまくスケールしまうように見えるしていません。私は、ViewStateのすべてを送信するために必要な場合はどう?

残念ながら、私は現時点ではWebフォームに結びついてるとMVCに移行するために、私の組織を説得することができていない。

役に立ちましたか?

解決

POSTされたフィールドをリダイレクトする前に永続化されている、あなたはリダイレクトした後、そのデータにアクセスする必要がある場合は、

は、私はあなたが言及として、クエリ文字列のデータ・レコード(複数可)の識別子を追加します。また、(メッセージなどを表示するための)要求のステータスを指定することができます。そして、GETのページには、データを読み出すことができますし、それをやります。

私がGETして得られた各ページ、前のページのViewStateなどへのアクセス権を持っていないので、これを回避するために他の方法が表示されません。

Server.Transferを使用すると、元のページにPOSTを扱うのと同じ効果を持つことになります。

あなたはPOSTデータを保存するためにセッション変数を使用することができ、それは臭います。

他のヒント

私はあなたがまだフォーム要素でgetメソッドを使用することができると思います。 この場合、あなたは、通常の方法であなたのコントロールのIDを使用することはできません。しかし、あなたはビューステートを取得するためにRequest.Paramsコレクションを使用することができます。

更新:申し訳ありませんが、私はもう一度試してみました。あなたが分離コードでそのIDによってサーバーコントロールにアクセスできることを見出しました。同様ます:

Response.Write(text1.Text)

の例を参照してください。

ASPXページ(のみフォーム要素)

< form id="form1" runat="server" method="get">
< div>
< asp:TextBox ID="text1" runat="server" />
< asp:Button ID="button1" runat="server" OnClick="buttonClick" />
< div>
< form>

注: 私は、そうでない場合は上記のコードは表示されません「<」各々の前にスペースを使用する。

ページの背後にあるコード(ボタンのみイベントをクリックしてください):

protected void buttonClick(object sender, EventArgs e)
    {
        string text = Request.Params["text1"];

        Response.Write(text);
    }

ボタンをクリックすると、URLは次のようになります。

ます。http:// localhostを:?1157 / WEBSITE1 / Default.aspxの__のViewState =%2FwEPDwUKMTkwNjc4NTIwMWRkoJEtEHZ8lHQ53QllSkz8ncpEw80%3D&__ EVENTVALIDATION =%2FwEWAwKf%2BPPUCwKTjKGwCgKs34rGBvus9oxN%2FQkHlkzpKUEwrbxHLM6u&テキスト1 =アシシュ&ボタン1 =

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