从AngularJs Controller获取Json格式的数据

时间:2017-10-21 07:18:42

标签: c# angularjs asp.net-mvc razor

AngularJs我很难过。它在某些情况下适用于我,当我尝试更改项目的模板时,它不再起作用。这是场景 - 我在ASP.NET MVC中有一个控制器,它以Json格式返回产品列表,最后我使用AngularJs控制器调用此控制器,如下所示:

C#

public JsonResult GetProducts()
{
    var result = (from c in db.Products
                  select new { c.ProductName, c.Price }).ToList();

    return Json(result, JsonRequestBehavior.AllowGet);
}

AngularJs

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

app.controller('ProductController', function ($scope, ProductService) { 
    $scope.Products = null;

    ProductService.GetProducts().then(function (d) {
        $scope.Products = d.data;

    }, function () {
        alert('Failed');
    });
});

app.factory('ProductService', function ($http) {
    var factory = {};

    factory.GetProducts = function () {
        return $http.get('/Product/GetProducts');
    }
    return factory;
});

在用户界面中,我使用了以下内容:

<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Get Products</title>

    <script src="~/Scripts/angular.js"></script>
    <script src="../AngularFile/AddToCart.js"></script>
</head>
<body>
    <div>
        <h2>Get Products</h2>
        <div ng-app="app" class="container">
            <br /><br />
            <br /><br />
            <input type="text" ng-model="name" />
            <h1>{{ name }}</h1>
            <div ng-controller="ProductController">
                <table class="table table-responsive" ng-repeat="m in Products">
                    <tr>
                        <td>{{ m.ProductName }}</td>
                        <td>{{ m.Price }}</td>
                    </tr>
                </table>
            </div>
        </div>
    </div>
</body>
</html>

我得到的输出是:

Sample Products

我不确定我做错了什么。在我之前的项目中,使用相同的代码,它正确地显示了产品,但是现在,我正在以Json格式获取数据。这是常见的,之前有人这样面对吗?

注意:如果我将方法类型从JsonResult更改为ActionResult,则不会显示任何内容。

0 个答案:

没有答案