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