2016-03-20 24 views
0

このページは基本的にユーザーのリクエストを受け取り、その日にselectクエリを実行します(ただし、db部分は重要ではありません) 。テキストボックス(txtDate)とボタン(setDate)があり、URLのDateパラメータとしてtxtDateの文字列で同じページにリダイレクトされます。 PageLoadでは、現在のQueryString [Date]を取り出し、txtDateに戻したいので(ユーザーが選択した日付を見ることができます)、新しいテキストボックスに設定するたびに自動的に古いQueryStringを要求します。リクエストしています。それは私を困惑させている。ASP.NETで異なるリダイレクトパラメータを使用して同じページにリダイレクト

これは、Page_Loadのです:

String dateInput = null; 
    dateInput = Request.QueryString["Date"]; 
    txtDate.Text = dateInput.Replace("-", "/"); //if I just comment this out, it works perfectly fine 

そして、これはボタンクリックである:私はこれを説明していた場合、私は非常によくわかりませんが、それはこのように動作します

String s = null; 
    s = txtDate.Text.Replace("/", "-"); 
    if (s == "") //if empty sends the current date 
    { 
     Response.Redirect("Default.aspx?Date=" + DateTime.Today.ToString("MM-dd-yyyy")); 
    } 
    else //sends the users date 
    { 
     Response.Redirect("Default.aspx?Date=" + HttpUtility.UrlEncode(s)); 
    } 

:現在の日付パラメータで

2016年3月14日

txtDateに入れて新しい日付:2016年3月16日、ヒットSETDATEボタン

は、2016年3月14日に戻ってリダイレクトするとき、私は、現在のパラメータ(2016年3月16日)にtxtDate.Textを設定した場合のみ、それ以外の場合は、正しくそれがされています

答えて

2

新しい日付パラメータにリダイレクト私はWebFormsを試してから長い時間が、私はあなたがテキストボックスを更新する前にそれがポストバックかどうかを確認する必要がある場合。

だから、基本的には...何をここで起こっていることがちょうどあなたのPage_Loadイベントが二回発射され、物事をラップするには

if (!Request.IsPostback) 
{ 
    txtDate.Text = dateInput.Replace("-", "/"); //if I just comment this out, it works perfectly fine 
} 

中にあなた

txtDate.Text = dateInput.Replace("-", "/"); //if I just comment this out, it works perfectly fine 

を包みます。 button_clickイベントの最初のツアー、次にリダイレクトの2回目のツアーです。あなたのボタンがクリックされたら、クエリパラメータを取得し、クエリ文字列の変更前にテキストボックスに設定します。だからこそ、その行を削除すれば問題ないのです。ポストバックかどうかを確認するだけです。

+0

ありがとうございました!それはちょうど!IsPostBackしかし、あなたは私が必要とする方向に私を送った。感謝します! – justiceorjustus

+0

喜んで助けてください。 :) –

関連する問題