2012-03-02 3 views
2

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

Мой код:

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

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

Error: jQuery is not defined

на этой линии:

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

Так что мой JavaScript не работает на странице, которая была разгромлена.

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

+0

я опубликовал решение здесь: [решения] (HTTP : //stackoverflow.com/questions/9503746/asp-net-4-0-webforms-routing-javascript-not-works) – algreat

ответ

3

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

<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` 
1

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

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

+0

Да, jQuery включен перед этой строкой. Все работает нормально, если я вызываю страницу напрямую без маршрутизации. – algreat

Смежные вопросы