Дублированные имена контроллеров MVC 3 в записи AJAX - PullRequest
1 голос
/ 28 мая 2011

Если со страницы localhost: nnnn / Class I щелкнуть ссылку AJAX, которая будет публиковать в 'Class / AddClass', я получу RawUrl класса Class / AddClass, и он работает просто отлично.

Если со страницы localhost: nnnn / Class / Index я нажимаю ту же ссылку, я получаю RawUrl класса / Class / AddClass, и он (очевидно) не работает.

Я понимаю, что нахожусь в Routing Hell, но кто переписывает URL и почему? Я кропотливо прошел по коду jQuery, и он действительно отправляется в Class / AddClass.

Спасибо за понимание ... Eric

1 Ответ

3 голосов
/ 28 мая 2011

Проблема не в переписывании.Ваш AJAX-запрос является JavaScript и не имеет ничего общего с механизмом маршрутизации ASP.NET.Когда вы используете Class/AddClass, вы делаете это относительно местоположения текущего URL.Вы можете использовать /Class/AddClass, который будет разрешен в корне сайта.Это создает проблему, если вы находитесь даже в виртуальном каталоге.Я предпочитаю получить полный URL из файла конфигурации:

var url = '<%: ConfigurationManager.AppSettings["WebsiteURL"] %>/Class/AddClass';

С соответствующей записью в web.config.Это исключает любую догадку.Вы также можете использовать ResolveUrl:

var url = '<%: ResolveUrl("/Class/AddClass") %>';
...