如何在添加PathInfo值时正确解析css链接?
问题描述:
我有一个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
答
显然当head
元件被定义为服务器控制,link
元件内被自动解析和由服务器解析。因此,解决方案是将head元素仅用作标准html控件,或者可能需要手动添加link
元素。我放弃了我正在追求的PathInfo
想法,所以我没有那么做。
答
使用
:
<base href="http://yourdomain.com">
<link rel="stylesheet" href="/App_Themes/main/style.css" type="text/css" />
答
我解决这个问题,加入一个html“基地”的标签, 使用方法:Page.ResolveUrl(“〜”)来解决该网站的基本URL。在 效果很好localhost及服务器:
<base href="<%=ResolveUrl("~")%>" />
因此,“工程”将根据项目的变化? – 2011-02-02 17:13:22