2010-01-28 8 views
8

Dokumenty dla @MasterType mają ten przykład.Dlaczego dyrektywa @MasterType nie jest domniemana przy ustawianiu @Page masterPageFIle?

<%@ Page masterPageFile="~/MasterPage.master"%> 
<%@ MasterType virtualPath="~/MasterPage.master"%> 

Dlaczego jest jeszcze potrzebny @MasterType? Czy kompilator automatycznie nie może wykonać tych samych czynności w oparciu o @Page masterPageFile? Kiedy nie chcesz użyć obu?

+0

+1 Zastanawiam się, że tyle razy sam! – MPritchard

Odpowiedz

2

Można ustawić różne strony wzorcowe na każdej stronie PreInit. Tak więc strona wzorcowa ogólnie nie jest dobrze zdefiniowana.

+1

W tym przypadku spodziewam się, że nie użyjesz żadnej z dyrektyw, ponieważ jest ona zdefiniowana w czasie wykonywania, a ty także nie spodziewałbyś się uzyskać wpisanej właściwości 'Master'. Pytanie jest naprawdę skierowane na sytuacje, w których używasz dyrektyw, a strona wzorcowa jest znana podczas kompilacji. –

+0

Ale jest tylko jedna sytuacja. Strona i strona wzorcowa są luźno powiązane. Możesz zmienić stronę wzorcową w czasie wykonywania. Dyrektywa MasterPage jest po prostu inteligentną obsadą dla prostych sytuacji i musisz wziąć na nią pełną odpowiedzialność. –

Powiązane problemy