Ошибка JavaScript маршрутизации ASP.NET WebForms - PullRequest
2 голосов
/ 02 марта 2012

У меня есть некоторые проблемы с JavaScript при использовании ASP.NET 4.0 WebForms Routing.

Мой код:

void Application_Start(object sender, EventArgs e)
{
        RegisterRoutes(RouteTable.Routes);
}

void RegisterRoutes(RouteCollection routes)
{
    routes.Ignore("{resource}.axd/{*pathInfo}");             
    routes.MapPageRoute("GoodInfo", "catalog/good/{good}", "~/GoodInfo.aspx");
    routes.MapPageRoute("GoodGroup", "catalog/group/{group}", "~/default.aspx");
}

Без маршрутизации все в порядке. Но когда я использую его, я получил ошибку на странице (в Firebug)

Ошибка: jQuery не определен

в этой строке:

jQuery(document).ready(function () {
    HideBlocks();
});

Так что мой JavaScript не работает на перенаправленной странице.

Я добавил эту строку routes.Ignore("{resource}.axd/{*pathInfo}");, но она мне не помогла.

Ответы [ 2 ]

3 голосов
/ 03 августа 2012

Я решил свою проблему! Решение состоит из 2 частей. Сначала я изменил определение сценариев с

<script type="text/javascript" src="../scripts/something.js"></script>

до

<script type="text/javascript" src="/../scripts/something.js"></script>

Спасибо MilkyWayJoe за это решение.

Во-вторых, я добавил Ignore Routing

routes.Ignore("catalog/good/{resource}.axd/{*pathInfo}");

вместо:

routes.Ignore("{resource}.axd/{*pathInfo}");

Так что у моих веб-ресурсов больше нет маршрутов на таких страницах, как http://mysite.com/catalog/good/41

Также у меня есть события сценария на странице, такие как http://mysite.com/catalog/good/41/event/seq/1. Чтобы поймать все параметры, я добавляю к своим правилам маршрута это

   routes.Ignore("catalog/good/{good}/{*query1}");
   routes.Ignore("catalog/good/{good}/{query1}/{*query2}");
   routes.Ignore("catalog/good/{good}/{query1}/{query2}/{*query3}");
   routes.Ignore("catalog/good/{good}/{query1}/{query2}/{query3}/{*query4}");

И не забывайте, что ваши Ignore объявления должны быть размещены до MapPageRoute объявлений:

routes.Ignore("catalog/good/{resource}.axd/{*pathInfo}");
routes.MapPageRoute("GoodInfo", "catalog/good/{good}", "~/GoodInfo.aspx");`enter code here`
1 голос
/ 02 марта 2012

Если вы посмотрите на сгенерированный источник вашей страницы, включена ли библиотека jQuery?

Если вы включаете jQuery через ресурс, дважды проверьте, что он включен и что перед этой строкой возникают ошибки.

...