ASP.NET WebForms路由导致js,css和图像出现问题

时间:2012-01-21 10:38:05

标签: asp.net url routing webforms

我现在遇到一个关于ASP.NET WebForms中路由的奇怪问题。我尝试使用路由的唯一原因是为了获得更好看的URL而不是其他任何东西。此外,这是我第一次尝试实现路由。

我的目标很简单: www.domain.com/default.aspx - > www.mydomain.com/Home-Page

所以,我在global.asax

中实现了以下内容
Sub Application_Start(ByVal sender As Object, ByVal e As EventArgs)
    RegisterRoutes(RouteTable.Routes)
End Sub

Sub RegisterRoutes(ByVal routes As RouteCollection)
    routes.MapPageRoute("homepage", "Home-Page", "~/Default.aspx")
End Sub

然而,目标已实现,由于逻辑原因,我页面上的所有图像都消失了; 而不是找到img/someimage.png,而是试图获得Home-Page/img/someimage.png

现在,我当然可以纠正我的图像路径,但这需要相当长的时间。我很乐意摆脱路由。

我的问题: 有没有办法阻止文件夹(图像,CSS,js等)受到路由机制的影响,只能实现很好的URL?

4 个答案:

答案 0 :(得分:4)

您可以告诉路由忽略特定的文件类型。确保此条目位于特定路线之前。

routes.IgnoreRoute("{file}.png")

答案 1 :(得分:0)

好吧..奇怪但我似乎找到了解决方案:

首先,为了让您知道,@ DaleBurrell关于使用html标签的建议也有效。

我将导航改为:

<a id="default" href="Home/">Home</a>

到此:

<a id="default" href="<%: Page.GetRouteUrl("home", vbnull)%>" >Home</a>
基本上,我没有硬编码主导航的url,而是从global.asax中获取实际的名称值。

在全球的asax中:

Sub RegisterRoutes(ByVal routes As RouteCollection)
    routes.MapPageRoute("home", "Home", "~/Default.aspx")
End Sub

一切似乎都很好并且现在正在工作..如果有任何其他问题,我会发布在这里...

答案 2 :(得分:0)

只需在ScriptManager中添加您要排除的内容

  <asp:ScriptManager ID="ScriptManager1" runat="server">
      <Scripts>
        <asp:ScriptReference Path="jquery-1.7.1.min.js" />
        <asp:ScriptReference Path="init.js" />
      </Scripts>
  </asp:ScriptManager>

答案 3 :(得分:0)

我遇到了这个问题......我正在实施路线,所以我的网址对于搜索引擎来说很不错......(类似categories/beans-pulses/3001而不是products.aspx?catID=3001)包括

        routes.MapPageRoute(
           "Category-Simple-Route",
           "categories/{seo-catName}/{CatId}",
           "~/products.aspx"
           );
在Application_Start函数中

我错误地认为定义这样的页面路由不会干扰目录结构,这被证明是错误的。即使在上面的示例中使用products.aspx,它也会被视为子文件夹类别中名为3001的文件。

我犯的另一个错误是我的所有文件引用,包括img标签上的src,ajax url调用,脚本标记和所有href链接相关。由于img和脚本等在固定的位置,因此给它们明确的引用是有意义的。 /img/image.jpg而不是img/image.jpg(添加了前导斜杠和类似的链接.Asp:带有ImageUrl参数的标记,以~/开始。使用Search&amp; Replace一小时后,一切正常。< / p>