答え
私自身の質問に答えるために8時間が経過していないので、これをここに投稿してください:
私はこれを理解しました。PreRender から Server.MapPath を削除したところ、正しくレンダリングされました。私の脳のおなら。みんなありがとう
私のコードでは:
CssIncludes.Add("~/Sites/0/PageLayouts/Predefined/News/CSS/HeaderMenu.css");
ページにレンダリングされると、ページ ソースに次のように表示されます。
<link href='C:\inetpub\wwwroot\mysite\Sites\0\PageLayouts\Predefined\News\CSS\HeaderMenu.css' type='text/css' rel='stylesheet' />
そのcss URLを手動でコピーしてブラウザに貼り付けると、cssが正常に読み込まれますが、c:\localhost\mysite\にはまったく表示されません!
解決策はありますか?
CSS インクルード リスト:
public List<string> CssIncludes
{
get
{
if (_cssincluded == null)
_cssincluded = new List<string>();
return _cssincluded;
}
}
void Page_PreRender(object sender, EventArgs e)
{
foreach (string css in CssIncludes)
{
Page.Header.Controls.Add(new LiteralControl(string.Format("<link href='{0}' type='text/css' rel='stylesheet' />", Server.MapPath(css))));
}
}