Frage

Ich mache eine asp.net Anwendung mit einer Seite. Auf dieser Seite habe ich ein Usercontrol definiert. Das Usercontrol verfügt über ein Menü (drei Tasten) und 3 usercontrols auch definiert. Je nach klickten, um eine der drei usercontrols wendet sichtbar wahr oder falsch.

In diesen drei usercontrols habe ich einen Knopf, und eine Nachricht, und ich möchte, um die Nachricht zeigen, „Es ist nicht postback“, wenn die Taste im Menü angeklickt wird, und wenn die Taste des Usercontrol geklickt wird die Nachricht wird " Ja, es ist Postbacks !!!“.

Die Frage ist, dass die Verwendung von Eigentum „IsPostBack“ des Usercontrol oder der Seite der Nachricht wird es nie sein „Es ist nicht postback“ wegen der klickten Taste im Menü mit der verschachtelten Usercontrol zu zeigen.

Das ist die Struktur der Seite:

page
  parent usercontrol
    menu
    nested usercontrol 1
      message
      button
    nested usercontrol 2
    nested usercontrol 3

Ich weiß, es kann getan werden mit Viewstate aber gibt es eine Möglichkeit, IsPostBack Eigenschaft oder wissen zu simulieren, wenn der wahre Usercontrol Postbacks ist?

Danke.

War es hilfreich?

Lösung

Ich habe die Lösung für dieses Problem. Wenn ein Element ausgelöst wird ein Ereignis an den Server in der Request.Form Sammlung geschickt, so habe ich eine Eigenschaft in verschachtelten Benutzersteuerelementen, die es überprüft, ob ein Steuer Kind (definiert in der Usercontrol selbst) in Request.Form Sammlung:

public bool IsUserControlPostBack
    {
        get 
        { 
            foreach (Control c in Controls)
                foreach(string key in Page.Request.Form.AllKeys)
                    if( c.ClientID == key.Replace('$','_'))
                        return true;

            return false;
        }
    }

Dieser Code kann eine Eigenschaft des Usercontrol sein oder, wenn es eine Menge Zeit genannt wird, eine Variable, dass es auf dem OnInit Ereignisse des Usercontrol festgelegt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top