2016-04-05 5 views
0

Я новичок в AngularJS, пытаясь передать идентификатор от url к методу JSON контроллера MVC, а затем вернуть JSON в угловую область.Передача идентификатора от url к контроллеру MVC (AngularJS)

Вот мой MVC контроллер:

public ActionResult Client(int clientid) 
{ 
    return View(); 
} 

public JsonResult GetClient(string clientid) 
{ 

    ClientDao clientDao = new ClientDao(); 

    Client client = clientDao.getClientById(int.Parse(clientid)); 

    return new JsonResult { Data = client, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; 
} 

А вот мой Угловой .js файл:

var app = angular.module('myapp', ['ngRoute']); 

app.config(function ($routeProvider, $locationProvider) { 
    $routeProvider 
     .when('/Home/Client/:clientid', { 
      controller: 'ClientCtrl' 
     }) 
     .otherwise({ 
      redirectTo: "/Home/Index" 
     }) 
    $locationProvider.html5Mode({ 
     enabled: true, 
     requireBase: false 
    }); 
}); 

app.controller("ClientCtrl", function ($scope, $http, $routeParams) { 
    // alert($routeParams.clientid); 
$http({ 
    url: "/Home/GetClient/", 
    params: {clientid: $routeParams.clientid}, 
    method: "get" 
}) 
    .then (function (response) { 
     $scope.client = response.data; 
    }) 
}); 

Проблема заключается в том, что параметр clientid в $routeParams всегда не определен. Как мне это исправить?

Update: Вот как моя ссылка выглядит следующим образом: http://something.com/Home/Client/20

+0

Я думаю, что вы просите за неприятности, имея как ASP.NET MVC маршрут и угловой маршрут, указывающий на (/ Главная/Клиент). Это не приложение SPA? –

+0

Да, в конце, это должно быть. В любом случае, я новичок в этом материале, поэтому я пытаюсь понять, как передать этот идентификатор на сервер, получить ответ JSON и передать этот ответ в область видимости. – Med

ответ

1

То, как вы определили ваши действия в контроллере MVC, при условии, что по умолчанию маршрут является единственным определен, он ожидает, что ваш URL, чтобы выглядеть http://something.com/Home/Client?clientid=20

Решения:

  1. Rename ClientId к идентификатору
  2. Добавить другой маршрут в AppStart/RouteConfig, который имеет ClientId параметров
  3. Использование атрибутов маршрутизации и определить маршрут, как [Маршрут («getclient/{ClientID}»)]
+0

Я могу уладить 'JsonResult GetClient (string clientid)', однако 'clientid' всегда null, и вот в чем проблема. Если я даю строке статическое значение, мой код работает. – Med