2016-06-11 7 views
1

私はMVCで新しい角度を使用しています。私はコントローラからASP.NET MVC EFを使ってデータを読み込みます。私は はこれで試してみてください。AngularJSとAsp.Netの間の接続MVC

私は私のMVCコントローラ(パスは「/Controllers/BrandController.cs」です)このコードに追加:私は両方置くファイルjsの中

public JsonResult GetBrands() 
     { 
      var result = db.Brands.ToList(); 
      return Json(result, JsonRequestBehavior.AllowGet); 
     } 

そして、サービスと角度のコントローラ、つまりコード:

var BrandApp = angular.module('BrandApp', []); 

//Controller 
BrandApp.controller('BrandController', function ($scope, BrandService) { 

    getBrands(); 
    function getBrands() { 
     BrandService.getBrands() 
      .success(function (items) { 
       $scope.brands = items; 
       console.log($scope.brands); 
      }) 
      .error(function (error) { 
       $scope.status = 'Unable to load customer data: ' + error.message; 
       console.log($scope.status); 
      }); 
    } 

}); 

//service 
BrandApp.factory('BrandService', ['$http', function ($http) { 

    var BrandService = {}; 
    BrandService.getBrands = function() { 
     return $http.get('/Home/GetBrands'); 
    }; 
    return BrandService; 

}]); 

私は間違っていますか?

お返事ありがとうございます!

答えて

1

コントローラ名はBrandControllerなので、URLは/Brand/GetBrandsである必要があります。

BrandService.getBrands = function() { 
    return $http.get('/Brand/GetBrands'); 
}; 

通常、あなたが問題のようなものを扱うとき、あなたはFiddlerChrome Plugin PostMan、またはいくつかの他のツールを使用してデバッグしたいです。

+0

ありがとうございました! – Dona

0

C#コントローラが「BrandController」の場合、URLは/ Brand/GetBrandsである必要があります。単にそのようなあなたの$ HTTPメソッドを変更します。

BrandService.getBrands = function() { 
    return $http.get('/Brand/GetBrands'); 
}; 

またGetBrands法上[HttpGet]属性を追加することをお勧めします。

+0

ありがとうございました! – Dona

0

変更

return $http.get('/Brand/GetBrands'); 
+0

ありがとうございました!!! – Dona

0

に勝利は正しいです。また、角度コントローラを定義するときに問題が発生します。 あなたが

BrandApp.controller('BrandController', function ($scope, BrandService) { 
... 
}) 

があり、そのようなことが必要です:あなたは二番目のパラメータである配列へのパラメータリストへに追加する必要があり、依存関係を追加するたびに

BrandApp.controller('BrandController', ['$scope', 'BrandService', function ($scope, BrandService) { ... }]) 

をその配列の最後には無名関数があります。

MyApp.controller('MyController', [function() { ... }]) 

それだけでより安全:

また、あなたは常にあなたのコントローラがどのように見える場合でも、2番目の引数として配列を使用する必要があります。私が正しく覚えていれば、角度のいくつかのバージョンが破損する可能性があります(ただし必ずしもそうではありません)。

関連する問題