2

我有一个 asp.net 3.5 应用程序。当我尝试向要在其中提取的 url 添加一个值时Request.PathInfo,我会丢失任何链接的内容,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
4

3 回答 3

0

采用:

<base href="http://yourdomain.com">
<link rel="stylesheet" href="/App_Themes/main/style.css" type="text/css" />
于 2011-02-02T17:17:20.397 回答
0

显然,当head元素被定义为服务器控件时,服务器link会自动解析和解析其中的元素。因此解决方案是将 head 元素作为标准 html 控件,或者可能手动添加link元素。我放弃了PathInfo我所追求的想法,所以我没有走那么远。

于 2011-02-25T21:01:09.623 回答
0

我解决了这个问题,添加了一个 html 'base' 标签,使用方法:Page.ResolveUrl("~") 来解析网站的基本 url。在本地主机和服务器上运行良好:

    <base href="<%=ResolveUrl("~")%>" />
于 2017-09-19T09:19:48.557 回答