返回顶部
首页 > 资讯 > 前端开发 > JavaScript >如何解决asp.net中mvc使用ajax提交参数的匹配问题
  • 937
分享到

如何解决asp.net中mvc使用ajax提交参数的匹配问题

2024-04-02 19:04:59 937人浏览 安东尼
摘要

本篇文章为大家展示了如何解决asp.net中mvc使用ajax提交参数的匹配问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 想到在

本篇文章为大家展示了如何解决asp.netmvc使用ajax提交参数的匹配问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

想到在asp.net的mvc中如果使用ajax向服务端传递参数时如果参数是一个类或者是个数组(或List集合)以及更复杂的对象时,服务端总是会发生取不到值的情况,当然网上也有很多解决的例子,但都是在服务端想办法来解决的(比如将JSON转换为字符串,再在服务端反序列化为一个对象),为何不能在客户端就把这个问题搞定。

其实问题没那么复杂,那是因为在Jquery提交Array的数据时,提交的时候始终会在名称后面加上”[]”, 问题就出在这里。另外在服务端对数组和内嵌的js对象进行解析时,需要像这样的格式,比如数组(或List集合)在服务端需要这样{'xxx[0]':'aaa','xxx[1]':'bbb'}的格式,而内嵌对象需要像这样{'xxx.a':'DDD','xxx.b':'hhh'},找到问题的原因就好解决了,如果我们能将json的格式转换为服务端了能够识别的格式,问题岂不迎刃而解。

说干就干,直接上代码

 代码如下:


//用于MVC参数适配javascript闭包函数

var mvcParamMatch = (function () {
var MvcParameterAdaptive = {};
//验证是否为数组
MvcParameterAdaptive.isArray = Function.isArray || function (o) {
return typeof o === "object" &&
Object.prototype.toString.call(o) === "[object Array]";
};
//将数组转换为对象
MvcParameterAdaptive.convertArrayToObject = function (arrName, array, saveOjb) {
var obj = saveOjb || {};
function func(name, arr) {
for (var i in arr) {
if (!MvcParameterAdaptive.isArray(arr[i]) && typeof arr[i] === "object") {
for (var j in arr[i]) {
if (MvcParameterAdaptive.isArray(arr[i][j])) {
func(name + "[" + i + "]." + j, arr[i][j]);
} else if (typeof arr[i][j] === "object") {
MvcParameterAdaptive.convertObject(name + "[" + i + "]." + j + ".", arr[i][j], obj);
} else {
obj[name + "[" + i + "]." + j] = arr[i][j];
}
}
} else {
obj[name + "[" + i + "]"] = arr[i];
}
}
}
func(arrName, array);
return obj;
};
//转换对象
MvcParameterAdaptive.convertObject = function (objName,turnObj, saveOjb) {
var obj = saveOjb || {};
function func(name, tobj) {
for (var i in tobj) {
if (MvcParameterAdaptive.isArray(tobj[i])) {
MvcParameterAdaptive.convertArrayToObject(i, tobj[i], obj);
} else if (typeof tobj[i] === "object") {
func(name + i + ".", tobj[i]);
} else {
obj[name + i] = tobj[i];
}
}
}
func(objName, turnObj);
return obj;
};
return function (json, arrName) {
arrName = arrName || "";
if (typeof json !== "object") throw new Error("请传入json对象");
if (MvcParameterAdaptive.isArray(json) && !arrName) throw new Error("请指定数组名,对应Action中数组参数名称!");
if (MvcParameterAdaptive.isArray(json)) {
return MvcParameterAdaptive.convertArrayToObject(arrName, json);
}
return MvcParameterAdaptive.convertObject("", json);
};
})();


使用方法非常简单,看下面的例子:
首先是客户端的代码

 代码如下:


var sendData = {
"Comment": "qqq",
"Ajax1": { "Name": "sq", "Age": 55, "Ajax3S": { "Ajax3Num": 234 } },
"Ajax2S": [{ "Note": "aaa", "Num": 12, "Ajax1S": [{ "Name": "sq1", "Age": 22, "Ajax3S": { "Ajax3Num": 456 } }, { "Name": "sq2", "Age": 33, "Ajax3S": { "Ajax3Num": 789 } }] },
{ "Note": "bbb", "Num": 34, "Ajax1S": [{ "Name": "sq3", "Age": 44, "Ajax3S": { "Ajax3Num": 654 } }, { "Name": "sq4", "Age": 987 }] }]
};


$.ajax({
url: "@Url.Action("AjaxTest")",

data: mvcParamMatch(sendData),
dataType: "json",
type: "post",
success:function(result) {
alert(result.Message);
},
error:function(a,b,c) {
}
});


然后是服务端对应客户端json的实体类

 代码如下:


public class AjaxParamModels
{
public string Comment { set; get; }
public Ajax1 Ajax1 { set; get; }
public List<Ajax2> Ajax2S { set; get; }
}
public class Ajax1
{
public string Name { set; get; }
public int Age { set; get; }
public Ajax3 Ajax3S { set; get; }
}
public class Ajax2
{
public string Note { set; get; }
public int Num { set; get; }
public List<Ajax1> Ajax1S { set; get; }
}
public class Ajax3
{
public int Ajax3Num { set; get; }
}


然后是controller中的action代码

 代码如下:


public class TestController : Controller
{
//
// GET: /Test/
public ActionResult Index()
{
return View();
}
public ActionResult AjaxTest(Models.AjaxParamModels model)
{
//在此可访问model
return Json(new {Message = "qqqqq"});
}
}


这样就OK了,不管你这个json对象有多少复杂都没关系,他会自动转换为服务端要求的格式,服务端再也不用操心了。

上述内容就是如何解决asp.net中mvc使用ajax提交参数的匹配问题,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网JavaScript频道。

--结束END--

本文标题: 如何解决asp.net中mvc使用ajax提交参数的匹配问题

本文链接: https://lsjlt.com/news/82802.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何解决asp.net中mvc使用ajax提交参数的匹配问题
    本篇文章为大家展示了如何解决asp.net中mvc使用ajax提交参数的匹配问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。 想到在...
    99+
    2024-04-02
  • ajax如何解决参数过长无法提交成功的问题
    这篇文章主要介绍了ajax如何解决参数过长无法提交成功的问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。查了很多资料都说,get方法的参数...
    99+
    2024-04-02
  • 如何解决css中的匹配问题
    这篇文章主要介绍了如何解决css中的匹配问题,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。问题描述众所周知在写 css的时候,会根据html 中类的定义或者 id 的定义来写...
    99+
    2023-06-08
  • 怎么解决Ajax提交参数的值中带有html标签不能提交成功的问题
    这篇文章主要介绍“怎么解决Ajax提交参数的值中带有html标签不能提交成功的问题”,在日常操作中,相信很多人在怎么解决Ajax提交参数的值中带有html标签不能提交成功的问题问题上存在疑惑,小编查阅了各式...
    99+
    2024-04-02
  • ajax提交到servelt获取参数有乱码如何解决
    本篇内容主要讲解“ajax提交到servelt获取参数有乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ajax提交到servelt获取参数有乱码如何...
    99+
    2024-04-02
  • 如何使用java暴力匹配及KMP算法解决字符串匹配问题
    这篇文章主要介绍如何使用java暴力匹配及KMP算法解决字符串匹配问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!要解决的问题?一、暴力匹配算法一个图例介绍KMP算法String str1 =&...
    99+
    2023-06-21
  • 如何解决Ajax提交Form表单页面仍会刷新的问题
    小编给大家分享一下如何解决Ajax提交Form表单页面仍会刷新的问题,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!搞了半天原来点...
    99+
    2024-04-02
  • 如何解决ajax中提交数据到后台jsp页面及页面跳转问题
    这篇文章主要为大家展示了“如何解决ajax中提交数据到后台jsp页面及页面跳转问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何解决ajax中提交数据到后台...
    99+
    2024-04-02
  • 如何解决spring mvc 返回json数据到ajax报错parseerror问题
    小编给大家分享一下如何解决spring mvc 返回json数据到ajax报错parseerror问题,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!最近使用ajax接收spring mvc...
    99+
    2024-04-02
  • np.meshgrid中的indexing参数问题如何解决
    这篇文章主要介绍“np.meshgrid中的indexing参数问题如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“np.meshgrid中的indexing参数问题如何解决”文章能帮助大家解...
    99+
    2023-07-05
  • Mybatis如何解决sql中like通配符模糊匹配问题
    目录sql中like通配符模糊匹配问题将查询条件通过功能类处理后台Contronller获得查询条件mapper.xml中对应的使用方法使用like实现模糊匹配方式一方式二方式三sq...
    99+
    2024-04-02
  • 解决@RequestBody使用不能class类型匹配的问题
    @RequestBody不能class类型匹配 在首次第一次尝试使用@RequestBody注解 开始加载字符串使用post提交(貌似只能post),加Json数据格式传输的时候, ...
    99+
    2024-04-02
  • 如何解决Nginx参数站点配置上的问题
    如何解决Nginx参数站点配置上的问题,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Nginx参数有很多经典的语句,其中upstream....
    99+
    2024-04-02
  • 如何使用HTML5中postMessage解决Ajax中POST跨域的问题
    这篇文章主要为大家展示了“如何使用HTML5中postMessage解决Ajax中POST跨域的问题”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何使用HTM...
    99+
    2024-04-02
  • JQuery中Ajax的Post提交在IE下中文乱码的问题怎么解决
    本篇内容主要讲解“JQuery中Ajax的Post提交在IE下中文乱码的问题怎么解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JQuery中Ajax的Pos...
    99+
    2024-04-02
  • 如何使用ajax解决下拉框的onchange问题
    这篇文章将为大家详细讲解有关如何使用ajax解决下拉框的onchange问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 即在触发地区下拉...
    99+
    2024-04-02
  • 如何处理ajax异步提交返回值中的换行问题
    这篇文章将为大家详细讲解有关如何处理ajax异步提交返回值中的换行问题,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。背景介绍:需要实现的功能是:在下拉框中选择分类,提交到...
    99+
    2024-04-02
  • 如何解决js正则匹配多个全部数据问题
    这篇文章给大家分享的是有关如何解决js正则匹配多个全部数据问题的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。需求:获取所有title里的内容正则表达式后面加g表示多次匹配方式一:...
    99+
    2024-04-02
  • 如何解决Ajax应用中的session过期问题
    这篇文章主要讲解了“如何解决Ajax应用中的session过期问题”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何解决Ajax应用中的session过期问...
    99+
    2024-04-02
  • 如何使用shift解决shell编程中的入参问题
    这篇文章主要介绍如何使用shift解决shell编程中的入参问题,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!shell编程经常会遇到参数个数不定的这种情况,这种情况怎么处理呢?shift就要闪亮登场了。 $#是入参...
    99+
    2023-06-09
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作