【发布时间】:2011-06-20 03:11:04
【问题描述】:
我有一个 asp.net 3.5 应用程序。当我尝试向要在 Request.PathInfo 中获取的 url 添加一个值时,我会丢失在 head 中链接的任何内容,因为这些位置被解析为相对路径。
母版页如下所示:
<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 元素,就像这样
<base id="ctl00_ctl00_baseElement" href="http://localhost:5000/project/"></base>
但我的链接仍然不起作用,因为 asp.net 坚持将 url 呈现为相对路径,除非 href 以 / 开头,但在这两种情况下,我现在最终都高了一级。
http://localhost:5000/App_Themes/main/style.css
【问题讨论】:
-
所以“项目”会根据你的项目而改变?
-
@luke 是的,这就是 asp.net 开发服务器的工作方式。
localhost:port/project name/stuff.