为何选择css&图像在asp.net中的URL重写失真?

时间:2014-11-24 06:09:11

标签: css asp.net url-rewriting imageurl

我有一个显示项目列表的.aspx页面。目前,它显示www.site.com/Catalog.aspx?mid=228,需要www.site.com/CellPhone/blackbery/sprint/Q10.aspx。所有项目都显示在DataList和on按钮上,单击超链接重定向到Catalog.aspx,查询字符串'id'即设备ID。

现在,我已将LinkBut​​ton的URL动态构建为'CellPhone/blackbery/sprint/228',也为其他项目构建。

以上链接重定向和网址更改但css受到干扰。 &安培;我想动态重写所有链接而不是硬编码。

css参考:

<link href="css/layout.css" rel="stylesheet" type="text/css" />
<link href="css/reset_font_grid.css" rel="stylesheet" type="text/css" />
<link href="css/buttons.css" rel="stylesheet" type="text/css" />
<link href="css/inner-pages.css" rel="stylesheet" type="text/css" />
<link href='http://fonts.googleapis.com/css?family=Raleway' rel='stylesheet' type='text/css'>

Catalog.aspx

<asp:HyperLink ID="HyperLink6" runat="server" NavigateUrl="/cellphone/blackberry/sprint/228.aspx">Show Cellphones asdfsdf</asp:HyperLink>

Global.asax中

<%@ Application Language="C#" %>
<%@ Import Namespace="System.Web.Routing" %>
<script runat="server">
    void Application_Start(object sender, EventArgs e)
    {
        // Code that runs on application startup
        RegisterRoute(System.Web.Routing.RouteTable.Routes);
    }

    void RegisterRoute(RouteCollection routes)
    {
        //http://aspsnippets.com/Articles/How-to-hide-remove-ASPX-extension-in-URL-in-ASPNet.aspx
        routes.MapPageRoute("44", "{cat}/{carrier}/{devices}/{id}.aspx", "~/Catalog.aspx");
    }
}

一切正常但只是页面上的css&amp;图片未应用!

3 个答案:

答案 0 :(得分:2)

只更改href相对于CSS的{​​{1}}而不是当前位置,

更改

root

<link href="css/layout.css" rel="stylesheet" type="text/css" />
<link href="css/reset_font_grid.css" rel="stylesheet" type="text/css" />
<link href="css/buttons.css" rel="stylesheet" type="text/css" />
<link href="css/inner-pages.css" rel="stylesheet" type="text/css" />

<link href="/css/layout.css" rel="stylesheet" type="text/css" /> <link href="/css/reset_font_grid.css" rel="stylesheet" type="text/css" /> <link href="/css/buttons.css" rel="stylesheet" type="text/css" /> <link href="/css/inner-pages.css" rel="stylesheet" type="text/css" /> 表示文件/css/layout.css位于layout.css的文件夹css内,无论您在哪里调用它,例如,如果您的网页都是这样的

root

如果您使用

http://www.example.com/product/smartphone/blackberry

它将查找<link href="css/layout.css" rel="stylesheet" type="text/css" /> 此路由css,因为该文件夹或路由中没有文件,因此无法加载导致您{{1}的root/product/smartphone/blackberry/css/layout.css文件被打扰了。

答案 1 :(得分:0)

您需要使用ResolveUrl

示例:

<link href="<%= ResolveUrl("css/layout.css") %>" rel="stylesheet" type="text/css" />

如果您有任何问题,请与我们联系。

答案 2 :(得分:0)

最简单的方法应该是添加一个不是文件条件:

                <conditions>
                    <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
                </conditions>