2012-03-26 9 views
1

Ich habe eine C# asp.net-Anwendung, die 3 Seiten hat. Seite 1 ist Dateneingabe. Page 2 ist eine Namenssuche. Seite 3 ist eine Zusammenfassung der Kontoinformationen.asp.net C# Befehlsschaltfläche führt Befehlscode nicht aus, wenn geklickt wird

Die erste Seite enthält 2 ASP: Textfeld (e) und 2 Tasten. Die erste Textbox ermöglicht es einem Benutzer, eine Kontonummer einzugeben. Die zweite Textbox ermöglicht es einem Benutzer, einen Namen einzugeben, um nach einer "Suche nach einer Kontonummer nach Namen" zu suchen. Schaltfläche 1 sendet die Kontonummer in Textfeld 1 auf der Kontoübersichtsseite über Abfragezeichenfolge. Schaltfläche 2 übergibt den Namen, um nach Suchseite über Querystring zu suchen.

Auf der Namenssuchseite wird eine Liste von Kontonummern und -namen angezeigt, wobei die Kontonummer als href-Verknüpfung zum Dateneintrag dient. Die Kontonummer wird über den Querystring im Link auf der Namenssuchseite zurück auf die Erfassungsseite übertragen.

Mein Problem tritt als solches auf. Wenn ich von der Seite für die Namenssuche oder von der Seite für die Kontozusammenfassung zur Dateneingabeseite zurückkehre, analysiere ich die Abfragezeichenfolge, um den Wert von Textfeld 1 mit der Kontonummer vorzufüllen.

Wenn der Benutzer ändert dann die Pre-besiedelte Kontonummer ein und klickt auf der Schaltfläche Nummer 1. Die Daten auf dem Kontoübersichtsseite ist für die Kontonummer vorge bevölkert und nicht die neue Kontonummer des Benutzer eingegeben.

Der Code für die Befehlsschaltfläche legt den Wert der Textbox Nr. 1 fest und steckt sie als Teil des Klickereignisses in die Abfragezeichenfolge ein. Der Querystring behält jedoch den vorbelegten Wert bei.

  case "summary": 

      sAPN = txtAPN.Text.ToString(); (<--- Textbox 1) this always comes out as the prepopulated value. 
      sfxbal = fxbal.CheckAPN(sAPN); (<---- Validation function) 
      if (sfxbal.Length == 14)   
      { 
       sAPN = sfxbal; 
       sfxbal = ""; 
      } 

      if (sfxbal == "") 
       Response.Redirect("CreateAccount_Summary.aspx?APN=" + sAPN); 
      else 
       Response.Redirect("GetAPN.aspx?APNError=" + sfxbal); 
      break; 

Ich habe versucht, mit Use Submit-Verhalten zu false. Ich habe versucht, ein Javascript "onblur" zu verwenden, und obwohl ich in einer Warnung den Wert von txtAPN (Textfeld 1) mit dem neuen vom Benutzer eingegebenen Wert anzeigen kann und nicht den vorab ausgefüllten Wert, werden die Daten immer für den vorab ausgefüllten Wert verwendet .

Es findet auch keine Validierung statt.

Wenn ich nichts in der Abfrage-Zeichenfolge zurückgeben. Die neue Benutzerkontonummer wird gespeichert, und die Daten auf der Übersichtsseite beziehen sich auf die neue Kontonummer.

Es verhält sich absolut wie mein Befehlscode wird umgangen. Warum sollte das passieren?

Antwort

1

Ich habe das starke Gefühl, dass Sie jedes Mal, wenn die Seite geladen wird, die Text-Eigenschaft festlegen.

Sie müssen einmal die Eigenschaft Text setzen (nur, wenn die GET gemacht):

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     txtAPN.Text = ....; 
    } 
} 

Ansonsten jedes Mal das Formular abgeschickt wird, wird das Textfeld den Wert von Query-String bekommen (es die überschreibt Wert vom Benutzer angegeben).

Verwandte Themen