2016-09-20 4 views
2

In meinem Programm habe ich einen Knopf klicken, von diesem onclick-Ereignis rufe ich eine Methode für einige Textbox-Validierung. Der Code ist:Wie die Rückgabe zwischen den Methoden

protected void btnupdate_Click(object sender, EventArgs e) 
    { 
    CheckValidation(); 
    //Some other Code 
    } 

    public void CheckValidation() 
    { 
    if (txtphysi.Text.Trim() == "") 
    { 
     lblerrmsg.Visible = true; 
     lblerrmsg.Text = "Please Enter Physician Name"; 
     return; 
    } 
    //Some other Code 
    } 

Hier wenn txtphysi.text null ist, dann kommt es in Schleife und Verwendung Rückkehr dann kam es aus der CheckValidation() Methode nur und es weiterhin in btnupdate_Click Fall, aber hier mag ich in btnupdate_Click den Ausführungsprozess stoppen ebenfalls. Wie kann ich es tun?

+2

Beachten Sie, dass "" String.Empty ist und unterscheidet sich von null – Media

Antwort

9

Es ist sehr einfach Programmierlogik in meinem Verständnis, dass Sie hier ..

anwenden müssen, ist, dass anstelle der Rückkehr voidBoolean von CheckValidation() Methode zurückkehren, so weiß, dass übergeordnete Funktion, die den Zustand von der Ausführung der Funktion.

protected void btnupdate_Click(object sender, EventArgs e) 
{ 
    var flag = CheckValidation(); 
    if(!flag) 
     return; 
    //Some other Code 
} 

public bool CheckValidation() 
{ 
    var flag = false; // by default flag is false 
    if (string.IsNullOrWhiteSpace(txtphysi.Text)) // Use string.IsNullOrWhiteSpace() method instead of Trim() == "" to comply with framework rules 
    { 
     lblerrmsg.Visible = true; 
     lblerrmsg.Text = "Please Enter Physician Name"; 
     return flag; 
    } 
    //Some other Code 
    flag = true; // change the flag to true to continue execution 
    return flag; 
} 
+0

Harsh Baid.it funktioniert. .Du bist großartig. –

+0

Sie sind willkommen ..;) –

4

Um dies zu erreichen:

1) Ändern Sie den Rückgabetyp der CheckValidation() Methode bool. In Ihrer btnupdate_Click() Methode tut etwas entlang der Linien von

if(!CheckValidation()) 
{ 
    return; 
} 

Hoffnung, das hilft.

+2

Und was ist der andere Weg? – hvd

+0

Der andere Weg wäre, eine Ausnahme in die Validierungsmethode zu werfen und sie innerhalb der Click-Methode abzufangen. Aber das wäre der hässliche Weg, Dinge zu tun. –

0

Hier versuchen Sie dies:

protected void btnupdate_Click(object sender, EventArgs e) 
{ 
    if(!CheckValidation()) 
    { 
     //Some other Code 
    } 
} 

public bool CheckValidation() 
{ 
    if (string.isnullorEmpty(txtphysi.Text.Trim())) 
    { 
     lblerrmsg.Visible = true; 
     lblerrmsg.Text = "Please Enter Physician Name"; 
     return false; 
    } 
    else 
    { 
     //Some other Code 
     return true; 
    } 

} 
+0

Den anderen Code nach den 'return' Anweisungen natürlich zu setzen wird nicht funktionieren. – hvd

+0

'sonst { Rückkehr wahr; } // Ein anderer Code bedeutet, dass Sie nicht erreichbaren Code haben ..: P –

2

Obwohl Antwort bereits akzeptiert wurde, aber ich glaube, dies zu setzen Code in Ereignisse, die nicht gute Praxis ist. Besser, Delegierte für solche Zwecke zu verwenden.

public class Sample 
{ 
    public Sample() 
    { 
     UpdateAction = OnUpdate; 
    } 

    Action UpdateAction = null; 

    private void OnUpdate() 
    { 
     //some update related stuff 
    } 


    protected void btnupdate_Click(object sender, EventArgs e) 
    { 
     CheckValidation(UpdateAction); 
    } 

    public void CheckValidation(Action action) 
    { 
     if (txtphysi.Text.Trim() == "") 
     { 
      lblerrmsg.Visible = true; 
      lblerrmsg.Text = "Please Enter Physician Name"; 
      return; 
     } 
     action(); 
    } 

} 
Verwandte Themen