2010-01-28 4 views
8

Les documents pour @MasterType ont cet exemple.Pourquoi la directive @MasterType n'est-elle pas implicite lors de la définition de @Page masterPageFIle?

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

Pourquoi est-il nécessaire d'utiliser @MasterType? Le compilateur ne peut-il pas effectuer automatiquement les mêmes actions en se basant uniquement sur @Page masterPageFile? Quand ne voudriez-vous pas utiliser les deux?

+0

+1 Je me suis demandé si souvent! – MPritchard

Répondre

2

Vous pouvez définir différentes pages maîtres sur chaque page PreInit. Ainsi, la page maître n'est généralement pas bien définie.

+1

Dans ce cas, je pense que vous n'utiliserez aucune directive car elle est définie lors de l'exécution et vous ne vous attendez pas à obtenir une propriété 'Master' typée. La question est vraiment orientée vers les situations où vous utilisez les directives et la page maître est connue au moment de la compilation. –

+0

Mais il n'y a qu'une seule situation. La page et la page maître sont faiblement couplées. Vous pouvez changer la page maître à l'exécution. La directive MasterPage est juste une distribution intelligente pour des situations simples et vous devez en assumer l'entière responsabilité. –

Questions connexes