前端传递给后端复杂类型 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 等的更多相关文章
- 前端传递给后端且通过cookie方式,尽量传递id
前端传递给后端且通过cookie方式,尽量传递id
- 前端传递的json格式与SpringMVC接收实体类的对应关系
这篇文章主要是帮助刚刚入行的猿猿尽快适应Restful风格的搬砖生活 @RequestBody注解 基本介绍:@RequestBody主要用来接收前端传递给后端的json字符串中的数据的(请求体中的数 ...
- java后端无法接收到前端传递的json对象
java后端无法接收到前端传递的json对象 一·可能是因为未使用@RequestBody 在Controller层中,要么使用@RestController要么使用@Controller+@@Req ...
- 前端angularjs+requirejs+dhtmlx 后端asp.net webapi
享一个前后端分离方案源码-前端angularjs+requirejs+dhtmlx 后端asp.net webapi 一.前言 半年前左右折腾了一个前后端分离的架子,这几天才想起来翻出来分享给大家 ...
- 前端基于react,后端基于.net core2.0的开发之路(1) 介绍
文章提纲目录 1.前端基于react,后端基于.net core2.0的开发之路(1) 介绍 2.前端基于react,后端基于.net core2.0的开发之路(2) 开发环境的配置,注意事项,后端数 ...
- Spring MVC前传递和后端接收的参数名不一致处理方式
前端传递的变量和后端接收的变量名字不一致时,用注解@RequestParam来实现数据的传递 例如:@RequestParam(value="id") //实现商品的分类目录展现 ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(4)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(3)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
- 对一个前端使用AngularJS后端使用ASP.NET Web API项目的理解(2)
chsakell分享了一个前端使用AngularJS,后端使用ASP.NET Web API的项目. 源码: https://github.com/chsakell/spa-webapi-angula ...
随机推荐
- vs断点命不中?
用管理员权限打开vs,再打开工程即可
- Oracle 学习笔记二
一.oracle通用函数vnl(a,b) 用于任何类型,如果a的值不为null返回a的值否则返回b的值 条件判断oracle中可以使用 case 字段 when 条件1 then 表达式1 when ...
- Unity 3d 脚本常用事件
1.学习笔记,每天晚上看看unity 3d 的教程 学点东西,先上一张图 这是 系统中脚本执行的顺序图 Awake()在MonoBehavior创建后就立刻调用,在脚本实例的整个生命周期中,Awake ...
- 【机器学习理论】换底公式--以e,2,10为底的对数关系转化
我们在推导机器学习公式时,常常会用到各种各样的对数,但是奇怪的是--我们往往会忽略对数的底数是谁,不管是2,e,10等. 原因在于,lnx,log2x,log10x,之间是存在常数倍关系. 回顾学过的 ...
- Cesium 学习(二)所支持的模型数据类型,以及转换
1.Cesium所支持的模型数据类型 目前所知的有glTF.glb.bgltf等格式的模型数据: 想要了解glTF等的知识可以看一下https://www.cnblogs.com/fuckgiser/ ...
- 小白学python-day04-作业-九九乘法表相关
作业内容: 作业一: 作业二: 作业三: (1) (2) \n换行 \t制表符 end="" 代表打印不换行,双引号里面可以在结果之间加字符. print() 代表换行打印,使用时 ...
- HTML--CSS样式表的基本概念
CSS(Cascading Style Sheet 叠层样式表) 作用:美化HTML网页 (一)样式表分类 一.内联样式表 和HTML联合显示,控制精准,但是可重用性差,冗余多. 例如:<p ...
- python网络爬虫(14)使用Scrapy搭建爬虫框架
目的意义 爬虫框架也许能简化工作量,提高效率等.scrapy是一款方便好用,拓展方便的框架. 本文将使用scrapy框架,示例爬取自己博客中的文章内容. 说明 学习和模仿来源:https://book ...
- angular6组件封装以及发布到npm
一.创建angular项目 ng new myFirstDemo //angular-cli新建项目ng g m testm //新建模块ng g c testm/headertest //新建组件 ...
- java遍历所有目录和文件
package xian; import java.io.File; import java.util.ArrayList; public class GetFile { private static ...