ASP.NET MVC вызывает действие контроллера, отличное от JavaScript - PullRequest
0 голосов
/ 21 апреля 2011

Я нахожусь на странице ASP.NET MVC, расположенной по следующему адресу:

http://somedomain/someapp/Foo/Bar?param=val

У меня есть контроллер Foo , а также контроллер Bar . Мне нужно вызвать действие DoSomething контроллера Bar и передать его по параметрам, которые у меня уже есть в строке запроса текущего URL:

http://somedomain/someapp/Bar/DoSomething?param=val

Я не могу просто установить URL-адрес вызова AJAX на "/ Bar / DoSomething", потому что это приведет меня к следующему адресу:

http://somedomain/Bar/DoSomething?param=val

Я не могу указать полный URL-адрес, так как это будет зависеть от развертывания.

Я предполагаю, что есть какой-то способ сделать это с помощью MapRoutes, который достигнет того, что я хочу, и также передаст данные.

Ответы [ 3 ]

1 голос
/ 21 апреля 2011

Поскольку у вас уже есть URL-адрес с параметрами, вы можете сделать что-то вроде:

ResolveUrl("~/Bar/DoSomething?param=val");

Что бы преобразовать данный виртуальный URL в абсолютный URL

1 голос
/ 21 апреля 2011

Существует как минимум 3 варианта:

1 - вы можете иметь «глобальную» переменную в javascript, где вы устанавливаете значение базы веб-приложений и заменяете «http://somedomain.com/someapp/" на переменную:

var liveString = "http://" + window.location.host;
if (liveString.indexOf('somedomain.com') > 0) {
    liveString = liveString + '/someapp';
} else if (liveString .indexOf('localhost') > 0) {
    liveString = liveString + '/localApp';
}

У вас также может быть ссылка для получения URL-адреса в jQuery:

<a id="link-id" href="<%Url.Action("ActionName", "ControllerName", new { param = val })%>" style="display:none;"></a>

var myUrlCall = $('#link-id').href;

Вы также можете создать приложение в корне в IIS 7, используя другой порт или добавив егов вашем хост-файле, чтобы ваш URL-адрес мог выглядеть следующим образом: htttp: //someapp.local, мы используем этот последний вариант, поскольку он лучше представляет живое приложение.

Дайте мне знать, если вам нужна дополнительная помощь!

0 голосов
/ 22 апреля 2011

Проверьте Ajax.ActionLink Вы можете указать имя контроллера и код, который будет вызываться в случае успеха, сбоя и т. Д.

ASP.NET MVC 2

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...