たとえば、GETを介して必要なWebページの検索/フィルターフォームを使用している場合、これは私が自分のコードで複数回使用したパターンです。ユーザーがフォームに入力した内容を処理するためのボタンを送信すると、通常どおり、コードビハインドをPOSTとしてヒットさせます。次に、手動でGETリクエストを作成し、それにリダイレクトします。
protected void BtnSubmit_Click(object sender, EventArgs e)
{
var query =
"?filter1=" + TxtFilter1.Text +
"&filter2=" + TxtFilter2.Text +
"&filter3=" + TxtFilter3.Text; // etc.
Response.Redirect(query);
}
次に、ページの読み込み時に、クエリ文字列のエントリを処理して、ページに関連するフォームコントロールを事前に入力します。
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
TxtFilter1.Text = Request.QueryString["filter1"] ?? "";
TxtFilter2.Text = Request.QueryString["filter2"] ?? "";
TxtFilter3.Text = Request.QueryString["filter3"] ?? "";
// etc.
}
}
これにより、ASP.Net(ビューステートを含む)によって管理される組み込みフォームPOSTをいじることなく、実際にQueryStringに入力される内容を制御できます。また、ユーザーがフォームに入力してボタンを押すと、リンク可能なURLがあり、POSTであったとしても、ページを更新しても、サーバーへのデータの再送信に関する迷惑なメッセージは表示されません。 。