【问题标题】:How do I get css links to resolve correctly when adding a PathInfo value?添加 PathInfo 值时如何正确解析 css 链接?
【发布时间】: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.

标签: asp.net css url pathinfo


【解决方案1】:

用途:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2012-03-08
        • 2021-02-23
        • 1970-01-01
        • 1970-01-01
        • 2017-05-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-19
        相关资源
        最近更新 更多