的应答 的
在这里发布8小时还没有通过我回答我自己的问题:
在我的代码中我有:
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))));
}
}
答案 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))));
}
}