2014-11-24 37 views
1

我有一个.aspx页面显示项目列表。目前它显示www.site.com/Catalog.aspx?mid=228需要是www.site.com/CellPhone/blackbery/sprint/Q10.aspx。所有项目都显示在DataList中,然后在按钮上单击超链接重定向到Catalog.aspx,查询字符串“id”是设备ID。为什么在asp.net中重写URL时,css&image会变形?

现在,我已经为LinkBut​​ton动态地创建了URL,并为其他项目创建了'CellPhone/blackbery/sprint/228'

上面的链接重定向和URL的变化,但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 &图像不适用!

回答

0

您需要使用ResolveUrl

例子:

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

请让我知道如果你有任何问题。

+0

嗨@Amarsinh波尔谢谢你回复这个工作正常! :) – 2014-11-25 09:43:45

2

只是改变了CSS相对href到它的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是文件夹中cssroot无论你怎么称呼它,例如,如果你的网页是这样

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

如果使用

<link href="css/layout.css" rel="stylesheet" type="text/css" /> 

它会寻找css与这条路线root/product/smartphone/blackberry/css/layout.css,因为有该文件夹中没有文件或路线,它不能加载CSS文件,导致您的CSS受到干扰。

+0

喜@Kyoijimaru,我想这too..and这也太工程..!所以+1 :) – 2014-11-25 09:44:56

0

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

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