将URL从url传递到MVC控制器(AngularJS)

时间:2016-04-05 09:42:59

标签: angularjs asp.net-mvc

我是AngularJS的新手,尝试将ID从url传递给MVC控制器JSON方法,然后将JSON返回到角度范围。

这是我的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 };
}

这是我的Angular .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始终未定义。我该如何解决这个问题?

更新:以下是我的链接的显示方式:http://something.com/Home/Client/20

1 个答案:

答案 0 :(得分:1)

您在MVC控制器中定义操作的方式,假设默认路由是唯一定义的路径,它希望您的网址看起来像http://something.com/Home/Client?clientid=20

解决方案:

  1. 将clientId重命名为id
  2. 在AppStart / RouteConfig中添加另一个具有clientid param
  3. 的路由
  4. 使用属性路由并定义您的路线,如[Route(“getclient / {clientid}”)]