たとえば、自分のWebページでGETで検索/フィルタフォームを使用している場合は、自分のコードで複数回使用したパターンがあります。ユーザーがフォームに入力した内容を処理するためのボタンを送信すると、コードビハインドが正常なPOSTとして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(View Stateを含む)を使わずに、実際にQueryStringに入るものを制御できます。また、ユーザーがフォームに記入してボタンを押すと、リンク可能なURLがあり、POSTであっても、ページを更新すると、サーバーにデータを再送信するという面倒なメッセージは表示されません。
あなたのページのviewstateを無効にするだけですが、コントロールではrunat = "server"を維持してください –