Mam kilka stron na mojej stronie asp.net, że chciałbym wyłączyć kontrolę na stronie wzorcowej. Czy istnieje sposób komunikacji ze stroną wzorcową ze strony podrzędnej?Jak kontrolować elementy na stronie głównej asp.net ze strony podrzędnej
Odpowiedz
Najprostszym sposobem jest ustawienie właściwości na stronie wzorcowej, która obsługuje funkcję włączania/wyłączania jak się nazywa. Następnie na stronie podrzędnej ustaw MasterType directive, aby uzyskać silnie typowane odwołanie do strony wzorcowej w celu ominięcia konieczności rzutowania.
Twoja strona dziecko musiałoby:
<%@ MasterType VirtualPath="~/Site1.Master" %>
I zadzwonić własność strony wzorcowej:
Master.MyLabel = false; // or true
Więc na swojego mistrza Mogłeś:
public bool MyLabel
{
get
{
return masterLabel.Enabled;
}
set
{
masterLabel.Enabled = value;
}
}
Oto przykład komunikacji ze stronami wzorcowymi na stronach podrzędnych.
Na stronie głównej, utworzyć właściwość do kontroli którego chcesz uzyskać dostęp, powiedzmy etykieta nazywany lblUser ...
public string MyProperty
{
set { lblUser.Text = value; }
}
Na stronie dzieci, dostęp do właśnie utworzonego jak w nieruchomości następujący przykład ...
((MyMaster)this.Master).MyProperty = "Text changed from Sub Page";
Jesteśmy w stanie to zrobić, ponieważ Mistrz jest po prostu klasą, która dziedziczy System.Web.UI.MasterPage.
Własność Label.Text, którą utworzyliśmy, jest po prostu własnością klasy Master (ta nazwa będzie specyficzną nazwą aktualnej strony wzorcowej, w tym przypadku MyMaster).
Zauważ, że nie będzie działało bez rzutowania na określoną klasę strony głównej, a to dlatego, że dodałeś pole, które nie istnieje w System.Web.UI.MasterPage, typ this.Master, ale w twoim konkretna klasa Master.
+1 do tego! Tak samo jak moje rozwiązanie, tylko bardziej eleganckie! – GenericTypeTea
Prosty i użyteczny. Dzięki i zasłużyłem na jeden punkt. – QMaster
this.Master.FindControl("controlid").dosomethinghere
-1 nazwy kontroli kodowania twardego jako ciągi są ZŁE – GenericTypeTea
@GenericTypeTea To, co robią w [dokumentacji] (https://msdn.microsoft.com/en-us/library/xxwa0ff0 (v = vs.140) .aspx) chociaż – Zorgarath
Trzeba użyć dyrektywy MasterType w widoku znaczników
<%@ MasterType TypeName="Namespace.Etc.MyMasterPage" %>
Wtedy będzie można uzyskać dostępu do żadnych właściwości publiczne strony wzorcowej strony Korzystanie
this.Master.PropertyIWantToIntefereWith...
nadzieję, że ten pomaga
robiłem to poprzez rzutowanie obiektu strony ... to brzmi SOOO znacznie lepiej! Dzięki! – CodeRedick
Nie było dla mnie jasne, gdzie określić wartość TypeName, więc użyłem opcji VirtualPath dla MasterType i działało świetnie. Dzięki! – Lloyd
Nigdy nie nowość! Dzięki Mark +1! – GenericTypeTea
I szukałem czegoś podobnego, ale to rozwiązanie nie działa dla mnie. Mam zagnieżdżoną stronę wzorcową. Czy to działa dla zagnieżdżonego mistrza? Kiedy zaimplementowałem, nie rozpoznaję kontroli, którą dodałem do mojego wzorca.
- 1. Jak wywołać funkcję javascript strony podrzędnej ze strony głównej javascript
- 2. Dostęp do zmiennych strony wzorcowej na stronie podrzędnej w asp.net
- 3. LinkButton na stronie wzorcowej nie uruchamia się na drugiej stronie podrzędnej w ASP.NET
- 4. Jak działa paginacja na stronie głównej Reddit?
- 5. Równoważnik strony głównej ASP.NET w Javie
- 6. PreRender na stronie głównej ASP.NET nie uruchamia się
- 7. Jak przekazać wartość ze strony po stronie serwera do funkcji po stronie klienta w asp.net
- 8. ASP.NET: Przewiń, aby kontrolować
- 9. Jak uzyskać stronę Div of Master na stronie w ASP.net?
- 10. Wszelkie pomysły dotyczące identyfikacji głównej treści strony?
- 11. Jak uruchomić EXE ze strony internetowej (asp.net)
- 12. Umieść ASP.NET na stronie wordpress
- 13. zintegrować CMS ze strony internetowej istniejącej ASP.NET
- 14. opencart jak wyświetlić wszystkie kategorie ze zdjęciami na stronie głównej opencart 1.5.1.3
- 15. Powracanie obiektu JSON ze strony ASP.NET
- 16. Jak uzyskać dostęp do strony Resource.resx ze strony ASP.NET?
- 17. Lista funkcji na głównej stronie z doxygenem
- 18. Jak mają encje HTML na stronie asp.net?
- 19. Podział strony na stałe elementy
- 20. Jak używać ramki na stronie ASP.NET?
- 21. Jak mogę pobrać aktualnie zalogowane konto Windows ze strony ASP.NET?
- 22. Wybierz wszystkie elementy na stronie
- 23. Pobierz zrzut ekranu ze strony ASP.Net
- 24. Jak wyświetlać właściwość strony wzorcowej na stronie w Umbraco
- 25. jQuery post ze strony internetowej ASP.NET (WebMatrix)
- 26. Jak kontrolować, po której stronie pojawia się akapit z marginesem?
- 27. Wymyśl formularz rejestracji na stronie głównej, a także
- 28. Jak grupować posty według daty na stronie głównej w Jekyll?
- 29. Jak uzyskać adres URL strony głównej?
- 30. Jak zastąpić węzeł strony głównej tpl - drupal
Marks anser kazał mi to kontynuować, ale to jest odpowiedź, w jaki sposób udało mi się go wdrożyć. Dzięki Ahmad. – Lloyd
Niezły. Jedną rzeczą, którą możesz zrobić, to przejść do pliku .designer.cs i zmienić zakres kontrolki tam na publiczny, a następnie masz wszystkie właściwości do przekazania logiki strony. Również jeśli wystawiasz publiczną własność, zwykle najlepiej jest używać CamelCase, pascalCase jest dla prywatnych pól. :) –
@ Mark: dobra informacja! Zgadzam się z CamelCase, tęskniłem za tym. Naprawiono teraz. –