派生ページが実際にここの問題に関連しているかどうかはわかりませんが、現在取り組んでいるコードで興味深い落とし穴に遭遇しました。
System.Web.UI.MasterPage から派生したカスタム 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>
head コンテナーの runat 属性は、リンク内のコードブロックが静的テキストであり、結果の html でそのままレンダリングされることを意味するため、上記の例は明らかに機能しません。
head から runat 属性を削除すると、CDN は機能しますが、Title が設定されていないことに気付きました。デバッグして、イミディエイト ウィンドウで Page.Title にアクセスしようとすると、例外が発生します。
// Using the Title property of Page requires a header control on the page. (e.g. <head runat="server" />).
したがって、宣言からページ タイトルを取得し、独自のタイトル プレースホルダーを頭に入れて、マスター ページのコード ビハインドから設定する方法はありますか、またはスタイルシートの CDN ドメインを動的に設定するより良い方法はありますか? 私ができると思う唯一の方法は、html リンク タグ全体を作成してヘッダー コントロールに追加することですが、もっと洗練された解決策があるかもしれないと思ったので、最初にここで質問します。