Почему мы используем тип @Master?
если у нас есть главная страница и страница контента. Так же директива @Page страницы контента выглядит как
<%@ Page Language="C#" MasterPageFile="~/Site1.Master" .... />
поэтому для доступа к элементам главной страницы на странице контента нам нужно будет использовать
<%@ MasterType VirtualPath="~/Site1.Master" %>
Итак, мой вопрос заключается в том, почему мы используем директиву @MasterType, когда мы уже определили в директиве @page, что эта страница содержимого находится на главной странице (здесь - Site1.Master)
Ответы
Ответ 1
В Документах Microsoft вы определяете тип свойства Master
, которое позволяет получить доступ к свойствам вашего производного класса MasterPage.
Предоставляет способ создания строго типизированной ссылки на главную страницу ASP.NET при доступе к главной странице из свойства Master.
Как пример:
this.Master.SomePublicPropertyOfMaster = Value;
Ответ 2
Указание директивы @MasterType с типом MyMasterPage
приводит к следующему определению свойства в коде класса:
public new MyMasterPage Master {
get {
return ({MyMasterPage})base.Master;
}
}
Это определение свойства создается методом BuildMiscClassMembers класса TemplateControlCodeDomTreeGenerator
.