2015-03-18 4 views
1

через Ajax Я пытаюсь ударить метод действия (город) от контроллера (Home), используя ниже кодНесовпадение Url от Url.Content

url: '@Url.Content("~/Home/city")', 

из адресной строки я обнаружил, что адрес несовпадающими как я в другом контроллере. Например, если я нахожусь в контроллере сайта, он перенаправляется на сайт/Дом/город. Вместо этого он должен перенаправить на главную/город. Это означает, что он принимает текущий контроллер и URL-адрес, который я передаю через Url.Content. Если я помещаю javascript-код в .aspx, то Url получает правильную переадресацию, если код javascript находится в отдельном файле, он поднимает вышеупомянутую проблему. Как перенаправить на определенный URL из javascript?

+0

Вы косяк использование '@ Url.Content' или любой код бритвы во внешнем файле javascript (его не анализируется движком просмотра) –

+0

Почему вы используете 'Url.Content', чтобы получить путь к ссылке на действие в первую очередь? Вы должны использовать 'Url.Action'. – mason

ответ

2

Если ваш JavaScript находится во внешнем файле, вы можете использовать следующую технику для доступа к пути маршрута к вашему действию.

Просто присоедините url к элементу, который вызывает вызов ajax в качестве атрибута данных.

В приведенном ниже примере я прикрепляю его к кнопке ввода.

<input data-url="@Url.Action("city", "Home")" value="DoPost" /> 

Тогда из вашего обработчика событий вы можете использовать JQuery data метод для чтения атрибут т.е.

var superUrl = $(this).data('url'); 

Затем используйте это в AJAX вызова:

url: superUrl