CSS文件绝对URL无法在本地计算机上运行

时间:2012-04-14 17:30:38

标签: c# css

应答

在这里发布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))));
        }
    }

3 个答案:

答案 0 :(得分: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";

答案 1 :(得分:1)

ASP.Net正在尝试将css路径解析为Windows文件路径。

我建议您自己编写CSS <link/>并使其相对于当前页面。

在这种情况下,正确的标签可能是:

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

请记住,任何链接都是UNIX样式的路径(即/不是反斜杠)。

修改

符合Asker(SandMan)Server.MapPath也需要删除。

这很可能解析了css路径。

答案 2 :(得分: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))));
    }
}