Benutzer mit den meisten Antworten
Zugriff von Masterpage auf Page

Frage
-
Hallo allerseits,
wie ich von einer asp.net Webseite auf die Variablen, Prozeduren und Funktionen einer Masterpage zugreifen kann, ist mir klar.
Aaaaber ... wie mache ich den umgekehrten Weg? ich müsste von der page.load einer Masterpage auf eine Funktion (type void) in der Page zugreifen. Wie mache ich das?
VS 2015 u1 community edition, Zielframework vorzugsweise 2.0, c#
Danke im Voraus!
mfg Christian Stüben
Christian Stüben Bedenke immer, die Welt ist eine flache Scheibe. www.haifischbar.com
- Bearbeitet kapitaen Samstag, 5. März 2016 07:06
Antworten
-
Hi Christian,
Du kannst mit FindControl arbeiten oder aus der Seite den Verweis auf sich in eine Eigenschaft in der MasterPage schreiben.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Bearbeitet Peter Fleischer Samstag, 5. März 2016 07:37
- Als Antwort vorgeschlagen Stefan FalzModerator Samstag, 2. April 2016 13:09
- Als Antwort markiert Stefan FalzModerator Mittwoch, 8. Juni 2016 10:48
-
Hi,
die MasterPage darf man sich nicht als Container vorstellen, der die Page beinhaltet, sondern eher als Control innerhalb der ContentPage. Daher auch die spätere Auslösung der Ereignisse innerhalb der MasterPage.
Das, was Du da machen willst, sollte man daher nicht über die MasterPage, sondern über ein anderes Element machen.
Du könntest bspw. in der global.asax in BeginRequest den Request.Form( "..." ) Parameter abfragen und dann die Sprache in Session( "Language" ) oder HttpContext.Current.Item( "Language" ) (Name ist frei wählbar und dient nur als Beispiel) hinterlegen. An den entsprechenden Stellen kannst Du dann über Session( "Language" ), bzw. HttpContext.Current.Session( "Language" ) ... von jeder Stelle aus abfragen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Samstag, 2. April 2016 13:09
- Als Antwort markiert Stefan FalzModerator Mittwoch, 8. Juni 2016 10:48
Alle Antworten
-
Hi Christian,
Du kannst mit FindControl arbeiten oder aus der Seite den Verweis auf sich in eine Eigenschaft in der MasterPage schreiben.
--
Viele Grüsse
Peter Fleischer (MVP, Partner)
Meine Homepage mit Tipps und Tricks
Kommas richtig setzen!
Schüler sagen, Lehrer haben es gut.
Schüler, sagen Lehrer, haben es gut- Bearbeitet Peter Fleischer Samstag, 5. März 2016 07:37
- Als Antwort vorgeschlagen Stefan FalzModerator Samstag, 2. April 2016 13:09
- Als Antwort markiert Stefan FalzModerator Mittwoch, 8. Juni 2016 10:48
-
Einen Verweis auf einen Repeater in der page habe ich schon versucht.
Problem ist, daß die page_load der masterpage später ausgeführt wird als derjenige der Page. Und in der Masterpage mache ich eine zentrale Verwaltung der Sprachanpassung. Daß heißt, der repeater auf der page wird immer einen Schritt zu spät erneuert. Online-beispiel:
http://360.haifischbar.de/links.aspx
Wenn Du hier auf die Flaggen klickst, werden die Buttons und allgemeinen Texte zwar erneuert, da Bestandteil der Masterpage, der repeater mit den Links aber immer erst beim zweiten anklicken der Flagge. Dessen Zeilen können ja nicht über findcontrol adressiert werden, und werden aus der Datenbank gefüllt.
Wie kann ich denn die Funktion void links_aktualisieren () { ... } in der masterpage hinterlegen und dann von dort aus aufrufen? (sorry, den Trick hatte ich schon mal, ist aber nach langen Jahren der visual studio enthaltsamkeit wieder in Vergessenheit geraten).
mfg Chris
Christian Stüben Bedenke immer, die Welt ist eine flache Scheibe. www.haifischbar.com
-
Hi,
die MasterPage darf man sich nicht als Container vorstellen, der die Page beinhaltet, sondern eher als Control innerhalb der ContentPage. Daher auch die spätere Auslösung der Ereignisse innerhalb der MasterPage.
Das, was Du da machen willst, sollte man daher nicht über die MasterPage, sondern über ein anderes Element machen.
Du könntest bspw. in der global.asax in BeginRequest den Request.Form( "..." ) Parameter abfragen und dann die Sprache in Session( "Language" ) oder HttpContext.Current.Item( "Language" ) (Name ist frei wählbar und dient nur als Beispiel) hinterlegen. An den entsprechenden Stellen kannst Du dann über Session( "Language" ), bzw. HttpContext.Current.Session( "Language" ) ... von jeder Stelle aus abfragen.
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community- Als Antwort vorgeschlagen Stefan FalzModerator Samstag, 2. April 2016 13:09
- Als Antwort markiert Stefan FalzModerator Mittwoch, 8. Juni 2016 10:48
-
Habe ich auch schon drüber nachgedacht. Aber da ja die Page und nicht die Masterpage, den repeater enthält, der sprachabhängig aus der Datenbank gefüllt wird, ist das für mich leider nicht die Lösung. Denn die session("language") würde damit auch nur einen Schritt zu spät aktualisiert.
Momentan versuche ich, in der Masterpage einen Dummy-Repeater (= null) vorzuhalten, den ich in der page auf den aktuelle repeater setze. Und den könnte ich dann in der masterpage entsprechend füllen. Sieht leider bis jetzt auch nicht gut aus.
mfg Chris
Christian Stüben Bedenke immer, die Welt ist eine flache Scheibe. www.haifischbar.com
-
Hallo Chris,
öhm, BeginRequest und andere Events in der global.asax werden weit vor den Page, MasterPage, ... Events ausgelöst. Daher verstehe ich nicht, warum Du denkst, dass das einen Schritt zu spät sein soll. Das passiert eher 5 Schritte zu früh :)
Gruß, Stefan
Microsoft MVP - Visual Developer ASP/ASP.NET
http://www.asp-solutions.de/ - Consulting, Development
http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community -
Äh, ja, das mit dem global.asax und beginrewuest habe ich irgendwie überlesen. Nicht böse sein.
Jau, werde ich mal schauen ob ich da weiterkomme.
Ich merke doch ein wenig daß ich jetzt jahrelang nicht mehr an meinen Seiten gebastelt habe...
Erstmal Danke Euch beiden, nächste Woche geht es weiter...
mfg Chris
Christian Stüben Bedenke immer, die Welt ist eine flache Scheibe. www.haifischbar.com