有时候,我们需要从页面传递一组数据到后台,但同时又需要传递几个独立的参数,这种情况很伤脑筋。
网上有各种各样的说法和办法,但都不好用,或没有说到关键的地方。
还有的建议传字符串后台格式化或解析,也有专门写一个切面程序修改mvc自带的格式化方法的,等等,都不是想要的东东。
我需要的是一个简简单单,不做任何改动就能实现的方法。
今天遇到这个问题,反复调试了好多次,终于找到了最简单的方法,什么都不用改,直接传递,直接接收大笑
现在记录下来,给大家参考参考:
一. 前端js提交方法:
function submit(group, quarter) {//这里只是个例子,不要关注业务,只看提交的数据格式就好
var list = $('#tttt').find('.on'),
dt = { 'Quarter': quarter, 'Group': group, 'Streses': [] };
for (var i = 0; i < list.length; i++) {
var t = $(list[i]),
v = parseInt(t.attr('idx') || 0, 10),
p = t.parent().parent(),
title = p.children().first().html();
dt.Streses.push({ 'Name': title, 'Level': v });
}
myAjax('/Stress/save', dt, null, function (re) {
if (re.Code == 'Success') {
location.href = 'yyyyy';
}
});
}
二.后台action接收方法:
[HttpPost]
public ActionResult Save(StressModel stress)
{
//do something…
return View(ReMsg);
}
三.接收参数对象定义:
public class Stress
{
public string Name { get; set; }
public int Level { get; set; }
}
public class StressModel
{
public int Quarter { get; set; }
public string Group { get; set; }
public List Streses { get; set; }
}
看看实际运行的结果:
这里需要特别注意的一点就是,.接收对象本身字段可以跟json不完全对应,这点大家都知道,但里面的列表对象,却必须完全对应!
我之前就是卡在这里,导致各种不理解,各种不成功。。。
其实一旦找到规律,真的是很简单,对不对