Не уверен, действительно ли производная страница имеет отношение к проблеме, но наткнулась на интересную ошибку в коде, над которым я работаю в данный момент.
У меня есть собственный класс мастер-страницы, производный от System.Web.UI.MasterPage, поэтому его можно расширить дополнительными полезными свойствами.
Страница, которая использует эту главную страницу, имеет объявление вверху (обратите внимание на установленный заголовок страницы).
<%@ Page Language="C#" MasterPageFile="~/MasterPages/Landing.master" AutoEventWireup="true" CodeFile="Index.aspx.cs" Inherits="Index" Title="Welcome to the site" %>
Кроме того, главная страница имеет ссылки на таблицы стилей в заголовке, которые извлекаются из сети CDN, определенной в файле конфигурации.
<head id="Head1" runat="server">
<link rel="stylesheet" type="text/css" href="<%= CDN %>/css/main.css" />
</head>
Очевидно, что приведенный выше пример не работает, потому что атрибут runat в контейнере заголовка означает, что кодовый блок в ссылке является статическим текстом и отображается как есть в итоговом HTML.
Если я удалю атрибут runat из головы, CDN будет работать, но теперь я замечаю, что заголовок больше не устанавливается. Если я отлаживаю и пытаюсь получить доступ к Page.Title в окне Immediate Window, я получаю исключение:
// Using the Title property of Page requires a header control on the page. (e.g. <head runat="server" />).
Итак, есть ли способ получить заголовок страницы из объявления, поместить мой собственный заполнитель заголовка в заголовок и установить его из кода программной части главной страницы или есть лучший способ динамически установить домен CDN для таблиц стилей? Я думаю, что единственный способ сделать это - создать весь тег (ы) ссылки html и добавить его в элемент управления заголовком, но я подумал, что может быть более элегантное решение, поэтому я Я сначала спрашиваю здесь.