我在这里使用urlrewriter.net作为几个问题的推荐。 我在显示图像和样式表方面遇到了困难。
我阅读了ScottGu的博客(再次按照此处的建议),最后他确实解决了这个问题并声明使用〜/用于服务器控件等。(文章末尾的“正确处理CSS和图像参考”) )。
我尝试了他的解决方案,似乎没有用。
对我来说唯一有用的就是写出完整的路径。出于某种原因,我认为这不是正确的解决方案。这将成为开发和调试的一个严重问题。
有谁知道问题的原因是什么? 我需要在web.config文件中更改一些内容吗?
由于
答案 0 :(得分:2)
根据我的经验基础标记是解决问题的根源
我强烈建议第一个选项,即在行动之前限制URLrewriter允许生效的内容,即检查.aspx 扩展名。
答案 1 :(得分:2)
您是否尝试使用Page.ResolveUrl?
<link href="<%=Page.ResolveUrl("~/mycss.css")%>" type="text/css" rel="stylesheet" />
答案 2 :(得分:0)
我认为您需要从重写引擎中排除样式表和图像目录。我不熟悉您正在使用的引擎,但是如果您使用的是基于非常宽的规则重写的重写规则,它将错误地指向您的样式表和图像,以及我相信的javascripts。
您还可以尝试使用基本标记。
<base href="http://www.w3schools.com/images/" />
尝试将其放在<head>
中,指向您的图片文件夹。
答案 3 :(得分:0)
我第二次使用基础href。虽然当站点从域的根目录运行时(即与视觉工作室服务器相比),你不得不做一点点差异。
<base id="BasePath" runat="Server"/
&GT;
然后在后面的主代码中。
protected void SetBaseHref()
{
if(Request.RawUrl!= Request.Url.PathAndQuery)
{
string baseUrl =“”;
if (Request.IsSecureConnection)
baseUrl += "https://";
else
baseUrl += "http://";
baseUrl += Request.Url.Host;
if (Request.Url.Port != 80)
baseUrl += ":" + Request.Url.Port.ToString();
baseUrl += Request.RawUrl;
BasePath.Attributes.Add("HREF", baseUrl);
}
}
答案 4 :(得分:0)
〜/仅适用于具有runat =“server”属性的标签,因为这会告诉asp.net呈现控件。
e.g。
&lt; link href =“〜/ mycss.css”type =“text / css”rel =“stylesheet”/&gt;
不会呈现您的期望,因为asp.net不会呈现控件。相反,你应该使用。
&lt; link runat =“server”href =“〜/ mycss.css”type =“text / css”rel =“stylesheet”/&gt;
另外将css链接放在head标签中,例如
&lt; head runat =“server”&gt;
&lt; link href =“〜/ mycss.css”type =“text / css”rel =“stylesheet”/&gt;
&LT; /头&GT;
答案 5 :(得分:0)
您可以使用:
<a href="<% =GetBaseURL() %>/">Home</a>
public static string GetBaseURL()
{
string url =HttpContext.Current.Request.Url.Scheme + “://” + HttpContext.Current.Request.Url.Authority + HttpContext.Current.Request.ApplicationPath.TrimEnd(’/') + ‘/’;
//EPiServer’s url start with a / so remove the url if (when) it contains one
if(url.EndsWith(”/”))
return url.Remove(url.LastIndexOf(”/”));
else
return url;
}
答案 6 :(得分:0)
URL重写的一个大问题是,当您使用相对路径时,它会使您感到困惑。
例如,如果您的应用程序的根目录中有一个名为page.aspx的文件,该文件用于多级导航的页面。 e.g。
Virtual Path => Physical Path
/ => /page.aspx?id=1
/food/banana => /page.aspx?id=2
假设你在page.aspx中有一个相对路径,你的css文件位于/css/main.css
<link rel="stylesheet" href="css/main.css"/>
当从/ food / banana的上下文执行page.aspx时,浏览器将尝试查找不存在的/food/css/main.css。
我采用的方式是对图像,CSS,JS进行可重复的URL重写,并且具有到样式表(以及img src和JavaScript)的绝对链接。这样您就可以保证浏览器始终能够找到它。然后从样式表中可以使用背景图像的相对路径。
我发现这种方法最简单,因为您不需要花费数周的时间来反复重写链接。
答案 7 :(得分:0)