Действие MVC Ajax относительно текущего контроллера - PullRequest
1 голос
/ 30 сентября 2011

Я пытаюсь получить Ajax-вызов по ссылке на главной странице.

Поэтому я хочу указать только действие относительно текущей страницы / контроллера.

т.е.

 $.ajax({
      url: '/Save',
      type: "GET",
      // .. etc 
 });

Я хочу вызвать действие «Сохранить» любого контроллера, обслуживающего страницу.Я думал, что это сработает сразу, но, похоже, нет.Есть ли элегантное решение?

1 Ответ

7 голосов
/ 30 сентября 2011

Если вы получили это прямо на ваш взгляд, вы могли бы сделать

 $.ajax({
      url: '@Url.Action("Save")',
      type: "GET",
      // .. etc 
 });

Если нет, и javascript находится во внешнем файле, вы можете прикрепить URL, созданный с помощью Url.Actionэлемент как data-? атрибут html5.А затем динамически прочитайте это значение атрибута перед выполнением вызова ajax.

<input type="text" data-save-action-url="@Url.Action("Save")" />

Вы должны никогда URL-адреса с жестким кодом в asp.net mvc.Всегда используйте Url.Action.Он проверяет вашу конфигурацию маршрутизации при генерации URL и всегда возвращает правильное значение в соответствии с ним.Если вы жестко запрограммировали URL, ваше приложение может стать непригодным для использования при изменении конфигурации маршрутизации.И вам придется изменить каждый URL-адрес в приложении вручную.

...