2016-04-05 14 views
0

URLからIDを渡してMVCコントローラJSONメソッドに渡してから、JSONを角度範囲に戻そうとして、AngularJSが初めてです。 urlからMVCコントローラ(AngularJS)へのIDの受け渡し

は、ここに私の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; 
    }) 
}); 

問題が$routeParamsでパラメータclientidは常に未定義であるということです。私はこれをどのように修正すべきですか?

アップデート:ここに私のリンクがどのように見えるかです:http://something.com/Home/Client/20

+0

私はあなたがasp.net MVCルートとを指し角度ルートの両方を有することにより、トラブルを求めていると思います同じ場所(/ホーム/クライアント)。これはSPAアプリケーションではありませんか? –

+0

はい、最後には、そうする必要があります。とにかく私はこのことを初めて勉強しているので、そのIDをサーバーに渡してJSON応答を取得し、その応答をスコープに再送信する方法を理解しようとしています。 – Med

答えて

1

あなたはMVCコントローラでのアクションを定義した方法を、デフォルトルートが定義された唯一のものであると仮定し、それはあなたのURLがhttp://something.com/Home/Client?clientid=20

のように見えることを期待

ソリューション:

  1. 名前の変更のclientId ID
  2. にはのClientIDのparam
  3. を持ってAPPSTART/RouteConfigで別のルートを追加します。
  4. 使用属性ルーティングし、[ルート(「getclient/{ClientIDを}」)]のようなあなたのルートを定義
+0

私は 'JsonResult GetClient(string clientid)'にアクセスできますが、 'clientid'は常にnullで、ここでは問題です。文字列に静的な値を渡すと、私のコードが動作します。 – Med

関連する問題