Я пытаюсь создать базовый класс для MasterPage в ASP.NET, чтобы структура наследования была следующей:
System.Web.UI.MasterPage
-> BaseMasterPage
-> SiteMasterPage
BaseMasterPage
просто предоставит некоторые методы и свойства, которые будут одинаковыми для нескольких главных страниц сайта, поэтому я думаю, что иметь здесь базовый класс имеет смысл.
Источники здесь и здесь предполагают, что то, что я пытаюсь сделать, возможно с подклассами класса Page
, но я не могу заставить его работать, и мне интересно, есть ли что-то в этом MasterPage
, что мешает мне сделать это.
Вот что у меня есть:
Base.Master.vb (в папке App_Code
)
Public Class BaseMasterPage
Inherits System.Web.UI.MasterPage
End Class
Site.Master.vb (в папке с именем Master
)
Public Class SiteMasterPage
Inherits GSHolidays.BaseMasterPage
End Class
Первая строка Site.master (также в Master
)
<%@ Master Language="VB" AutoEventWireup="true" CodeFile="Site.master.vb" CodeFileBaseClass="GSHolidays.BaseMasterPage" Inherits="GSHolidays.SiteMasterPage" %>
Я изменил имена классов, а также удалил их содержимое для простоты.Пространство имен GSHolidays
является значением по умолчанию, определенным в файле проекта.
Вот ошибка, которую я получаю:
В браузере (при переходе на страницу, котораяиспользует SiteMasterPage): Немного поиска в Google по этой проблеме побудил меня добавить свойство CodeFileBaseClass
(у меня его изначально не было), которое, похоже, не решило проблему,но добавил еще один, внутри Visual Studio -
В Visual Studio 2017:
Я не могу найти какую-либо информацию в Интернете об этой ошибкеи независимо от того, что я делаю, это, похоже, не исчезнет (если я не уберу свойство CodeFileBaseClass
.
Я действительно не уверен, куда идти отсюда, поэтому я надеялся, что один из васпарни могут помочь мне. Я прошу прощения, что этот вопрос довольно длинный, хотя, надеюсь, проблема проста, и кто-то может указать мне правильное направление. Заранее спасибо!