0

httpwebrequest の使用に少し混乱しています。いくつかの記事を調べてみましたが、初めて行ったのであまり得られませんでした。以下は私が取り組んでいるコードで、いくつか質問があります。

a) ASPX ページにはいくつかのコントロールが定義されており、コード ビハインドではいくつかのコントロールを作成します。POST で httpwebrequest を実行する場合、すべてのコントロールとその値を考慮する必要がありますか? コントロールの 1 つだけに対して POST を実行する必要があります。そのコントロールだけにできますか?

b) "(HttpWebRequest)WebRequest.Create" に指定する URL は? ユーザーに表示されるのと同じページだと思います。たとえば、以下の例では ("http://localhost/MyIdentity/Confirm.aspx?ID=New&Designer=True&Colors=Yes"); です。

c) httpwebrequest を実現するために、マークアップまたはコードで変更または処理する必要があるものは他にありますか?

    private void OnPostInfoClick(object sender, System.EventArgs e)
{
    ASCIIEncoding encoding = new ASCIIEncoding();
    string postData =  ""; //Read from the stored array and print each element from the array loop here. 
    byte[] data = encoding.GetBytes(postData);

    // Prepare web request...
    HttpWebRequest myRequest =
      (HttpWebRequest)WebRequest.Create("http://localhost/MyIdentity/Confirm.aspx?ID=New&Designer=True&Colors=Yes");
    myRequest.Method = "POST";
    myRequest.ContentType = "application/x-www-form-urlencoded";
    myRequest.ContentLength = data.Length;
    Stream newStream = myRequest.GetRequestStream();
    // Send the data.
    newStream.Write(data, 0, data.Length);
    newStream.Close();
}
4

1 に答える 1

1

通常は、サーバー間通信にのみ使用します (必ずしもページ間のデータ転送には使用しません) 。

私があなたの投稿と質問を正しく理解していれば、ASP.Net アプリケーションの他のページに POST データを送信したいだけのようです。PostBackUrlその場合、通常のポストバック (同じページへ) ではなく、送信ボタン (フォーム ターゲット)を単純に変更する方法があります。

他の方法もありますが、これが最も簡単なはずです。

<asp:Button ID="Button1" runat="server" Text="Button" PostBackUrl="foo.aspx" />

上記では、POST をそれ自体に戻す代わりに、POST されたfoo.aspxデータを検査/使用/処理できる場所に POST が送信されます。


コメントに基づいて更新します。

そのために HttpWebRequest を使ってコーディングする必要はありません。通常の ASP.net WebForms モデルがそれを行います。

この単純な ASP.net Web フォーム ページがあるとします。

<form id="form1" runat="server">

Coffee preference:
<asp:RadioButtonList ID="CoffeeSelections" runat="server" RepeatLayout="Flow" RepeatDirection="Horizontal">
   <asp:ListItem>Latte</asp:ListItem>
   <asp:ListItem>Americano</asp:ListItem>
   <asp:ListItem>Capuccino</asp:ListItem>
   <asp:ListItem>Espresso</asp:ListItem>
</asp:RadioButtonList>

<asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

....
</form>

インラインまたはコード ビハインドは次のようになります。

protected void Page_Load(object sender, EventArgs e)
{
   //do whatever you want to do on Page_Load
}


protected void Button1_Click(object sender, EventArgs e)
{
   //handle the button event
   string _foo = CoffeeSelections.SelectedValue;
   ...
}
于 2012-06-04T14:55:38.403 に答える