2016-03-20 6 views
0

Diese Seite mache ich im Grunde nimmt die Benutzeranfrage für das Datum und wird einige eine Abfrage an diesem Datum tun (aber der DB-Teil ist nicht wichtig) . Es gibt eine Textbox (txtDate) und eine Schaltfläche (setDate), die zum Umleiten auf dieselbe Seite mit der Zeichenfolge in txtDate als Date-Parameter in der URL verwendet wird. Auf PageLoad möchte ich den aktuellen QueryString [Date] nehmen und ihn wieder in txtDate einfügen (damit der Benutzer sehen kann, welches Datum ausgewählt wurde). Er wird jedoch automatisch den alten QueryString anfordern, wenn ich dieses Textfeld auf das neue setze Ich bitte. Es verwirrt mich.Umleiten auf die gleiche Seite mit verschiedenen Redirect-Parameter in ASP.NET

Dies ist der Page_Load:

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

Und das ist die Schaltfläche klicken:

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)); 
    } 

Ich weiß nicht, ob ich das sehr gut erklären, bin, aber es funktioniert wie folgt:

3/14/2016 Aktuelles Datum und Uhrzeit Parameter

Setzen neuer Termin in TxtDate: 2016.03.16 und Hit setDate Taste

Leitet zurück auf 2016.03.14, wenn und nur wenn ich txtDate.Text den aktuellen Parameter (2016.03.16) gesetzt, andernfalls wird es Umleitungen korrekt auf den neuen Parameter Date

Antwort

2

Es gewesen eine lange Zeit, seit ich WebForms ausprobiert habe, aber wenn ich recht habe, müssen Sie überprüfen, ob es ein Postback ist, bevor Sie Ihre Textbox aktualisieren.

Also im Grunde Ihre gerade wickeln

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

innerhalb eines

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

Dinge Zum Abschluss ..., was hier passiert ist nur Ihre Ereignis Page Load zweimal feuert. Erste Tour für dein button_click Event und dann zweite Tour für deinen Redirect. Wenn Sie auf die Schaltfläche klicken, nehmen Sie den Abfrageparameter und setzen ihn in Ihr Textfeld, bevor sich der Querystring ändert. Deshalb funktioniert alles gut, wenn Sie diese Zeile löschen. Alles, was Sie tun müssen, ist zu überprüfen, ob es ein Postback ist oder nicht.

+0

Vielen Dank! Es war einfach! IsPostBack, aber du hast mich in die Richtung geschickt, die ich brauchte. Bin dankbar! – justiceorjustus

+0

Ich bin froh zu helfen. :) –

Verwandte Themen