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 中添加网站路径键

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

并使网址像

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 回答