ASP.NET Beste Weg, um zu behalten label.text Wert zwischen postback mit PageMethods
ASP.NET 2.0, PageMethods.
Guten Tag,
Ich bin mit ASP.NET AJAX PageMethods dynamisch ändern Sie den text für ein Label, wenn eine dropdownlist geändert wird, auf meiner Seite.
Ich weiß, dass der text von Etiketten werden nicht beibehalten, zwischen postbacks, wenn Sie geändert werden auf client-Seite, die ist mein Fall. Ich habe gehört, dass es eine Lösung ist, dass die label-Inhalte in ein hidden-Feld, dann legen Sie Beschriftung-text für dieses Feld in der Page_Load.
Jedoch, diese Lösung scheint nicht wirklich sauber zu mir. Gibt es irgendwelche anderen alternativen oder best practices?
Danke!
Nur zur Klarstellung, ich habe eine dropdownlist mit Namen von Personen. Wenn der dropdownlist geändert wird, möchte ich in einem label, um die Telefonnummer der betreffenden person. Allerdings dachte ich, dass dabei ein vollständiges postback war nicht wirklich die beste alternative, so habe ich beschlossen, dem Telefon mit einem PageMethod, übergeben Sie die Id des ausgewählten Elements in der dropdownlist abrufen, das Telefon, und legen Sie es in das Etikett.
Jedoch, da andere Steuerelemente, die zu einer vollständigen postback, verliere ich das Telefon auf jedem postback. Ich weiß, dass man es in ein hidden-Feld, dann setzen Sie es zurück, um das label in Page_Load, wenn es eine vollständige Postbacks funktionieren würde, aber ich war wordering wenn es eine andere Lösung. Seit WebMethods gekennzeichnet sind, als statische, kann ich nicht schreiben Label.text = person.Telefon; in Ihnen.
InformationsquelleAutor Cedric Aube | 2009-04-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als Sie zu haben scheinen, ajax-Sie konnte nur eine partielle postback, schreiben Sie die Nummer auf dem Etikett und in den viewstate, und in page_load schreiben Sie den Wert aus der viewstate auf dem Etikett.
In der DropDownList-Event-Handler:
Und auf PageLoad:
Wenn Sie nicht wollen, um Ajax verwenden, können Sie festlegen, HiddenInputField in Ihre aspx-Datei, füllen Sie den Inhalt mit javascript Postback füllen Sie das Etikett mit dem Inhalt.
Auf aspx:
auf PageLoad:
sein könnte .Wert statt .Text ich bin nicht sicher im moment.
InformationsquelleAutor gsnerf
Ich schlage vor, kleben mit dem versteckten Feld-Lösung, so können Sie Ihre Logik an einem Ort.
Alternative ist die Verwendung eines update-panel statt der Seite Methoden, aber ich würde es nicht tun, weil das ist nicht so gut für die performance.
Als andere haben gesagt, eine Dritte alternative ist, führen Sie die gleiche Logik auf der server-Seite, wenn der gewählte Wert für die drop-down geändert hat. Die einzige Vervielfältigung ist nur einen Anruf zu tätigen, um den entsprechenden code, den Sie bereits haben.
InformationsquelleAutor eglasius
Ob die Etiketten-Wert wird ermittelt, indem der Wert der drop-down-könnte man immer ein Duplikat ist, die Logik auf dem server.
Wenn das Logik ist zu Komplex, oder Sie wollen nicht, es zu halten es mehrere Orte, dann die nächste beste option ist, was Sie vorgeschlagen. Ich bin mir nicht sicher, warum Sie denken, dies ist keine saubere Lösung, dies ist eine großartige Möglichkeit, um Informationen vom client an den server.
InformationsquelleAutor Daniel
Haben Sie als nur darum, den code in die Page_Load-um sicherzustellen, dass das label spiegelt den Wert, der benötigt wird, basierend auf dem dropdownlist-Wert? Diese Weise auf jedem postback, werden Sie zumindest sicher sein, dass man den richtigen Wert hat und Sie nicht haben, um sorgen über die Speicherung an 2 stellen.
Es klingt wie er will, den text zu reflektieren, etwas abhängig davon, was ausgewählt ist, die durch die dropdownlist. Der PostBack könnte gerade die gleiche Logik, die jeder Zeit.
InformationsquelleAutor Kelsey