ASP.NET WebForms Routing вызывает проблемы с js, css и изображениями - PullRequest
1 голос
/ 21 января 2012

У меня сейчас странная проблема с маршрутизацией в 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 ]

4 голосов
/ 21 января 2012

Вы можете указать маршрутизации игнорировать определенные типы файлов.Убедитесь, что эта запись предшествует конкретным маршрутам.

routes.IgnoreRoute("{file}.png")
0 голосов
/ 25 февраля 2015

У меня была эта проблема ... Я реализовывал маршруты, чтобы мои URL выглядели хорошо для поисковых систем ... (что-то вроде categories/beans-pulses/3001 вместо products.aspx?catID=3001), включая

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

вфункция Application_Start.

Я допустил ошибку, полагая, что определение таких маршрутов страниц не будет мешать структуре каталогов, что оказалось неверным.Несмотря на то, что в приведенном выше примере используется products.aspx, в категориях подпапок он рассматривается как файл с именем 3001.

Другая ошибка, которую я сделал, заключалась в том, чтобы сделать все ссылки на мои файлы, включая src on imgтеги, вызовы ajax url, теги сценария и все относительные ссылки.Поскольку img, скрипты и т. Д. Находятся в фиксированных местах, имело смысл дать им явные ссылки, т.е./img/image.jpg, а не img/image.jpg (добавление начального слеша и аналогичных ссылок. Asp: теги с параметром ImageUrl для запуска ~/. После часа поиска и замены все работало нормально.

0 голосов
/ 04 ноября 2012

Просто добавьте в 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>
0 голосов
/ 21 января 2012

ОК. Как ни странно, но мне кажется, что я нашел решение:

Прежде всего, просто чтобы сообщить, предложение @ 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

сейчас все выглядит нормально и работает .. Я опубликую здесь, если что-нибудь еще появится ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...