Проблема с использованием AngularJS $location provider и ASP.NET связи действий MVC вместе


У меня есть приложение, которое использует оба ASP.NET MVC и Angularjs. Я использую AngularJS $location provider для изменения поисковой части url-адреса при добавлении или удалении фильтров.

$location.search(searchObj);

Затем я подписываюсь на событие $locationChangeSuccess и использую signalr для обновления данных на странице, не требуя asp.net публикуйте каждый раз, когда меняется фильтр.

$scope.$on('$locationChangeSuccess', onRouteChanged, false);

Все вышеперечисленные работы, однако, у меня также есть некоторые ссылки на действия mvc на странице, которую мне нужно работа при нажатии кнопки.

<a href="@(Url.Action("Details", "Video"))/{{item.id}}">
...
</a>

К сожалению, при нажатии на эти ссылки url-адрес обновляется, но сообщение mvc не происходит. Если кто-то знает, как это сделать, я буду благодарен.

1 2

1 ответ:

По умолчанию ссылка в Директиве a обрабатывается модулем маршрута AngularJS. Если вы хотите сделать запрос API, вы можете сделать вызов с помощью модуля $http, либо завернутого в сервис или фабрику, либо просто в контроллер.

Попробуйте это:

<a href="" ng-click="showVideo(@(Url.Action("Details", "Video"))/{{item.id}})">

$scope.showVideo = function (url) {
    $http.get { method: 'GET', url: url }).
    success(function (data, status, headers, config) {
        // this callback will be called asynchronously
        // when the response is available
    }).
    error(function (data, status, headers, config) {
        // called asynchronously if an error occurs
        // or server returns response with an error status.
    });
}