0

答え

私自身の質問に答えるために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))));
        }
    }
4

3 に答える 3

2

~ 記号を削除して再試行してください。うまくいくことを願っています

appSettings セクションの web.config に Web サイト パス キーを追加します。

<add key="Websitepath" value="http://www.yoursite.com" /> 

URLを次のようにします

includeCss(ConfigurationManager.AppSettings["Websitepath"].ToString()+"Sites/0/PageLayouts/Predefined/News/CSS/HeaderMenu.css";
于 2012-04-14T17:32:16.883 に答える
1

ASP.Netは、cssパスをWindowsファイルパスとして解析しようとしています。

CSSを<link/>自分で作成し、現在のページを基準にして作成することをお勧めします。

この場合、適切なタグは次のようになります。

<link type='text/css' rel='stylesheet' href='CSS/HeaderMenu.css'/>

リンクはUNIXスタイルのパス(/バックスラッシュではない)であることに注意してください。

編集:

Asker(SandMan)によるServer.MapPathと、同様に削除する必要がありました。

これは、cssパスを解析していた可能性があります。

于 2012-04-14T17:46:45.307 に答える
0

これを理解しました。PreRender から Server.MapPath を削除したところ、正しくレンダリングされました。みんなありがとう。

かわった:

CssIncludes.Add("~/Sites/0/PageLayouts/Predefined/News/CSS/HeaderMenu.css");

に:

CssIncludes.Add("../Sites/0/PageLayouts/Predefined/News/CSS/HeaderMenu.css");

そして変わった

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))));
    }
}

に:

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' />", (css))));
    }
}
于 2012-04-16T16:49:48.623 に答える