Лучший способ предоставить URL-адрес angular $http.get/.post
-
21-12-2019 - |
Вопрос
Я использую angular с MVC4.Я хотел бы вызвать метод контроллера MVC из javascript, используя $http.get().Для этого требуется URL (очевидно).Я бы хотел, чтобы это был относительный путь, но как мне это написать?Мой контроллер находится в Controllers/Api/ExampleController.Я хотел бы, чтобы путь был разрешен, даже если я переместил файл javascript в другое место, то есть я хотел бы, чтобы путь был относительным к корню приложения, а не к файлу javascript.Я пробовал «~/Controllers/Api/ExampleControllerMethod» и «Controllers/Api/ExampleController/Method.
Решение 2
Спасибо за идеи, но эта вещь - это то, что я искал:
Настройте webapiconfig, чтобы добавить маршрут, как так (должен иметь его по умолчанию):
config.Routes.MapHttpRoute(
name: "ApiMethods",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
.
Так что теперь я могу пойти $ http.get ('API / {контроллер} / {метод}')
Другие советы
А $location
сервис предоставляет информацию по URL.Итак, вы можете создать что-то, чтобы затем сделать хост и порт динамическими:
var url = $location.host() + '/Controllers/Api/ExampleControllerMethod';
Из документации:
**url: http://www.example.com/base/path?a=b#h**
$location.protocol() = http
$location.host() = www.example.com
$location.port() = 80
$location.path() = /path
$location.search() = {"a":"b"}
$location.hash() = h
Что для меня сработало, было предоставление URL-адреса как «/ Controlername / Action» (вместо «контрольного управления / действия»)