当我从 angularJS 向我的 .net 控制器发出简单的发布请求时,值 null

问题描述 投票:0回答:1

这是我的 AngularJS 控制器代码,我从中向服务器发送 http post 请求:

function Search() {
    Filtro = new Object();
    Filtro.Usuario = $scope.UsuarioFilter;
    Filtro.Nombre = $scope.NombreFilter;
    Filtro.Rfid = $scope.RfidFilter;
    Filtro.CurrentPage = $scope.currentPage;

    GetUsuariosFilter(Filtro).then(function (response) {
        $scope.Beneficiarios = response.data; //(IsNull(response.data) ? null : JSON.parse(response.data));
    }, function (error) { alert(error.statusText); })
}

function GetUsuariosFilter(filtro) {
    return appService.POST(JSON.stringify(filtro), "/Usuarios/GetUsuariosFilter");
}

这是我在 C# 控制器中的代码:

[HttpPost]
public ActionResult GetUsuariosFilter(FiltroUsuarios Filtro)
{
    try
    {
        var response = _server.GetUsuarios();
        if (response == null) throw new Exception("Error.");
        return Json(response);
    }
    catch (Exception e)
    {
        return Json(new ResponseRequest() { Success = false, Message = e.Message, MessageDetail = (e.InnerException != null ? e.InnerException.Message : "") });
    }
}

这是我在 services.js 中的代码:

 this.POST = function (data, url) {
     var deferred = $q.defer();
     if (data == null || data == '' || data == undefined) data = '';
     var promise = $http({
         method: 'POST',
         url: url,
         contentType: "application/json; charset=utf-8",
         dataType: "json",
         data: data
     }).then(function (response) {
         deferred.resolve(response);
     }).catch(function (error) {
         if (error.status == -1) {
             alert('Se produjo un error al conectar con el servidor');
         }
         deferred.reject(error);
     });
     return deferred.promise;
 }

在 AngularJS 中,过滤器没问题,但是当值进入控制器时,所有对象都是空的。

angular angularjs asp.net-core controller asp.net-core-3.1
1个回答
0
投票

在 AngularJS 中,过滤器没问题,但是当值转到 控制器清空所有对象。

根据您共享的代码,模型绑定在这里似乎不正确。

FiltroUsuarios
类属性应与从 AngularJS 发送的属性的结构和名称相匹配。

正如我所见,您正在通过

application/json
但控制器与此不匹配。

因此您需要修复该问题才能正确处理模型绑定。

修改控制器:

[HttpPost]
public IActionResult GetUsuariosFilter([FromBody] FiltroUsuarios filtro)
{
     //Rest of your code
}

修改角度请求:

this.POST = function (data, url) {
    var deferred = $q.defer();
    $http({
        method: 'POST',
        url: url,
        headers: { 'Content-Type': 'application/json' },
        data: JSON.stringify(data)
    }).then(function (response) {
        deferred.resolve(response);
    }).catch(function (error) {
        if (error.status == -1) {
            alert('Se produjo un error al conectar con el servidor');
        }
        deferred.reject(error);
    });
    return deferred.promise;
}

注意:参阅此官方文档以获取有关模型绑定的更多详细信息

© www.soinside.com 2019 - 2024. All rights reserved.