2012-02-29 2 views
0

Я пытаюсь использовать маршрутизацию WebForms ASP.NET 4.0. Вот моя RegisterRoutes функция:ASP.NET 4.0 WebForms Маршрутизация Javascript не работает

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"); 
    } 

Для страниц, как /catalog/group/{group} все нормально. Но есть проблемы со страницами catalog/good/{good}.

Первая странная вещь: когда я открываю эту страницу, она вызывает дважды. Поэтому я вижу, какая ценность для Page.RouteData.Values["good"]. Первый раз в Page.RouteData.Values["good"] имеет правильное значение (мой goodId), но во второй раз я получил строковое значение «WebResource.axd»!

Так что мой highslide JavaScript не работает на странице. И когда я нажимаю на highslide image, страница перезагружается, а не выполняет JavaScript.

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

+1

меня аналогичная проблемой в на моих приложениях и «исправить» его, я добавил, что ссылки на ссылки на все ресурсы (изображения, css и js) на наших страницах изменились, поэтому вместо '' Я написал что-то вроде этого ''. Обратите внимание на дополнительную косую черту в источнике скрипта. VS будет жаловаться на это, но я буду работать нормально во время выполнения. Я взял время, чтобы понять это, и мне пришлось пробовать разные комбинации путей, пока я, наконец, не получил такой путь. Надеюсь, это сработает для вас. – MilkyWayJoe

ответ

1

Я решил свою проблему! Решение состоит из двух частей. Во-первых, я изменил свое определение сценариев из

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

в

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

Спасибо MilkyWayJoe ФОТ этого решения.

Во-вторых, я добавил Игнорирование 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` 
Смежные вопросы