字符串而不是数据

String instead of data

我正在尝试从控制器获取数据 像这样:

public IEnumerable<Custom> Search(string searchText = "")
    {
        return new[] { new Custom { Name = "a", Id = 1 }, new Custom { Name = "b", Id = 1 }, new Custom { Name = "c", Id = 3 } };
    }

但是 angular 给了我这个

m u s i c p o r t a l . C o n t r o l l e r s . C u s t o m [ ]

我尝试添加 http.headers 但没有。 我的代码:

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

musicportal.controller('SearchController', ['$scope', '$http', function ($scope, $http) {
$scope.answer = "awesome";

$scope.search = function (text) {
    $scope.answer = text;
    $scope.pms = [];                  
    $http.post('/Home/Search', { searchText: text }).
        success(function (data, status, headers, config) {              
            $scope.pms = data;
        });
    $scope.searchText = "";
}
}]);

您应该 return 数据为 json 例如

public ActionResult Search(string searchText = "")
{
    return Json(new { Foo = "Hello" }, JsonRequestBehavior.AllowGet);
}

$http.post('/Home/Search', { searchText: text }).
        success(function (data, status, headers, config) {              
            $scope.pms = data.Foo;
        });

现在,在您的例子中,您有一个列表,因此您需要将其转换为 JSON。您可以使用 JsonSerializer 在 ASP.NET MVC 中执行此操作,例如

public ActionResult Search(string searchText = "")
{
    string json = "";
    var items = new[] { new Custom { Name = "a", Id = 1 }, new Custom { Name = "b", Id = 1 }, new Custom { Name = "c", Id = 3 } };

    using (var writer = new StringWriter())    
    using (var jsonWriter = new JsonTextWriter(writer))
    {
        serializer.Serialize(jsonWriter, items);
        json = writer.ToString();
    }

    return Json(json, JsonRequestBehavior.AllowGet);
}

$http.post('/Home/Search', { searchText: text }).
            success(function (data, status, headers, config) {              
                $scope.pms = JSON.Parse(data);
            });

您可能需要尝试一下这段代码,第一次使用时并不完美,但希望它能给您一个良好的开端。