Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs .Net核心多个复杂模型绑定问题_Angularjs_Asp.net Core - Fatal编程技术网

Angularjs .Net核心多个复杂模型绑定问题

Angularjs .Net核心多个复杂模型绑定问题,angularjs,asp.net-core,Angularjs,Asp.net Core,我的控制器(.NET CORE MVC App)中有两个或两个以上复杂参数的操作,当从客户端发布数据时,应该捕获这些参数。我希望使用HTTP.GET或HTTP.POST方法执行调用(取决于具体情况)。我尝试过不同的方法,但只有绑定到JObject才能很好地工作。其他的有空值 我正在努力找出我做错了什么。有什么建议吗 这是我的密码 控制器: [HttpPost] public IActionResult GetDataPOST([FromBody]DataFilter dataFi

我的控制器(.NET CORE MVC App)中有两个或两个以上复杂参数的操作,当从客户端发布数据时,应该捕获这些参数。我希望使用HTTP.GET或HTTP.POST方法执行调用(取决于具体情况)。我尝试过不同的方法,但只有绑定到JObject才能很好地工作。其他的有空值

我正在努力找出我做错了什么。有什么建议吗

这是我的密码

控制器:

    [HttpPost]
    public IActionResult GetDataPOST([FromBody]DataFilter dataFilter, [FromBody]SeriesFilter seriesFilter)
    {

        return Json(null);
    }

    [HttpPost]
    public IActionResult GetDataPOSTjObject([FromBody]JObject stuff)
    {

        var content = stuff["dataFilter"].ToObject<DataFilter>();
        var content2 = stuff["seriesFilter"].ToObject<SeriesFilter>();

        return Json(null);
    }

    [HttpGet]
    public IActionResult GetDataGET(DataFilter dataFilter, SeriesFilter seriesFilter)
    {


        return Json(null);
    }
角度:

    $scope.SubmitTimeSeriesFilter = function (options) {

        options.search = "Search...";

        $http.get("@Url.Action("GetDataGET", "TimeSeries")", { params: { seriesFilter: options, dataFilter: options } }).success(function (rv) {
            options.success(rv);
        });

        $http.post("@Url.Action("GetDataPOST", "TimeSeries")", { seriesFilter: options, dataFilter: options }).success(function (rv) {
            options.success(rv);
        });

        $http.post("@Url.Action("GetDataPOSTjObject", "TimeSeries")", { seriesFilter: options, dataFilter: options }).success(function (rv) {
            options.success(rv);
        });

    };

你不能这样做<代码>[FromBody]读取整个数据流,由于请求流是TCP/IP连接,它只能向前读取,不能倒转(读取:只能读取一次)

因此,每个操作只能有一个
[FromBody]
。如果要发送多个模型,则需要创建一个可以同时保存这两个值的ViewModel

public class DataSeriesFilterViewModel
{
    public DataFilter DataFilter { get; set; }
    public SeriesFilter SeriesFilter { get; set; }
}
但由于两者都是字符串,这似乎是在浪费空间,所以您可以这样做

public class DataSeriesFilterViewModel
{
    public string DataFilter { get; set; }
    public string SeriesFilter { get; set; }
}

public IActionResult GetDataPOST([FromBody]DataSeriesFilterViewModel filter)
{
    return Json(filter);
}

你不能这样做<代码>[FromBody]读取整个数据流,由于请求流是TCP/IP连接,它只能向前读取,不能倒转(读取:只能读取一次)

因此,每个操作只能有一个
[FromBody]
。如果要发送多个模型,则需要创建一个可以同时保存这两个值的ViewModel

public class DataSeriesFilterViewModel
{
    public DataFilter DataFilter { get; set; }
    public SeriesFilter SeriesFilter { get; set; }
}
但由于两者都是字符串,这似乎是在浪费空间,所以您可以这样做

public class DataSeriesFilterViewModel
{
    public string DataFilter { get; set; }
    public string SeriesFilter { get; set; }
}

public IActionResult GetDataPOST([FromBody]DataSeriesFilterViewModel filter)
{
    return Json(filter);
}