前端传递给后端复杂类型 webapi 等
Posted yulin10
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了前端传递给后端复杂类型 webapi 等相关的知识,希望对你有一定的参考价值。
来自URL:https://www.cnblogs.com/kylewell/p/5674564.html
前端我需要通过ajax 传递如下的一个json对象:
var model = Parameters: [ Name: "A", Value: 1 , Name: "B", Value: 2 ] ;
所以我的ajax提交代码如下:
$("#btnGetModel").click(function () //var model = getParamenters(); var model = Parameters: [ Name: "A", Value: 1 , Name: "B", Value: 2 ] ; if (model.Parameters.length > 0) $.ajax( url: baseUri + "api/Model/Show", type: "post", dataType: "json", data: model, beforeSend: function (request) request.setRequestHeader(‘Authorization‘, ‘Bearer ‘ + getCookie("token")); ).then( function (d) if (d.StatusCode == 0) //SetModel(d.Message); initModel(d.Message); else showMsg(d.Message,"msgContainer"); , function () showMsg("请求失败", "msgContainer"); ); else showMsg("没有设定正确的参数!", "msgContainer"); );
这里注意一下传递的json对象名称为model。
然后看一下后端接口:api/Model/Show。不用看具体实现代码,而要注意传递的参数的类型和参数的名称。
[HttpPost] [ActionName("Show")] [Authorize] public async Task<IHttpActionResult> Generate([FromBody]ModelInfo model) Dictionary<string, double> pars = new Dictionary<string, double>(); if (model.Parameters.Count > 0) foreach (Parameter par in model.Parameters) pars.Add(par.Name, par.Value); string newFilePath = await modelMaker.Generate(pars); if (!string.IsNullOrEmpty(newFilePath)) return Json(new ResultData StatusCode = 0, Message = newFilePath ); else return Json(new ResultData StatusCode = 1, Message = "模型生成失败!" );
可以看到,传递的参数名称也是model,其实这里是和json对象的名称是一致的。
接着,继续看ModelInfo这个类型
public class ModelInfo public List<Parameter> Parameters get; set;
这个类里面有个Parameter类型集合的属性,而这个属性的名称是Parameters,而这又是跟json对象的Parameters属性对应。简单来说,这个属性就是一个集合,里面又包含了对象。
下面接着看Parameter这个对象:
public class Parameter public string Name get; set; public double Value get; set;
这个对象里面的属性名称又和json对象数组中的对象的属性名称又对应上了。
这样前端的json类型就能准确传递到后端来了。
总结:前端不管是多复杂的json数据类型,只要在后端按照这个json数据结构来组合类,并将属性名称一一对应上,就能准确将前端数据传递到后台上。
以上是关于前端传递给后端复杂类型 webapi 等的主要内容,如果未能解决你的问题,请参考以下文章