2011-02-02 71 views
2

我有一个asp.net 3.5应用程序。当我尝试向Request.PathInfo中的网址添加一个值时,我丢失了与head链接的任何内容,因为这些位置被解析为相对路径。如何在添加PathInfo值时正确解析css链接?

母版页是这样的:

<head id="Head1" runat="server"> 
    <link rel="stylesheet" href='~/App_Themes/main/style.css' type="text/css" /> 
</head> 

,并呈现这样

<head id="ctl00_ctl00_Head1"> 
    <link rel="stylesheet" href="../App_Themes/main/style.css" type="text/css" /> 
</head> 

,所以当我去

http://localhost:5000/project/folder/edit.aspx/555 

浏览器在

寻找样式表
http://localhost:5000/project/folder/App_Themes/main/style.css 

代替

http://localhost:5000/project/App_Themes/main/style.css 

是自动的行为,以解决相对路径?我可以改变它吗?这是以前的开发人员在做什么,我没有找到?

---编辑---

我采取了以下的建议,并加入像这样

<base id="ctl00_ctl00_baseElement" href="http://localhost:5000/project/"></base> 

一个base元素,但我的链接仍然没有工作,因为asp.net是渲染坚持除非href/开头,但是在这两种情况下,我现在的结果都是过高的。

http://localhost:5000/App_Themes/main/style.css 
+0

因此,“工程”将根据项目的变化? – 2011-02-02 17:13:22

回答

0

显然当head元件被定义为服务器控制,link元件内被自动解析和由服务器解析。因此,解决方案是将head元素仅用作标准html控件,或者可能需要手动添加link元素。我放弃了我正在追求的PathInfo想法,所以我没有那么做。

0
使用

<base href="http://yourdomain.com"> 
<link rel="stylesheet" href="/App_Themes/main/style.css" type="text/css" /> 
0

我解决这个问题,加入一个html“基地”的标签, 使用方法:Page.ResolveUrl(“〜”)来解决该网站的基本URL。在 效果很好localhost及服务器:

<base href="<%=ResolveUrl("~")%>" />