MVC传递数据-传递对象或对象集合
来源:互联网 发布:焊接机器人编程 编辑:程序博客网 时间:2024/06/08 06:03
前言
本文主要介绍从View(或者js)文件向Controller提交对象或者对象集合,比如,将表格中的一行数据作为一个对象提交,或将多行数据作为一个集合提交到Controller。
回顾
从View(或者js)文件向Controller提交数据,你可能见过以下几种方式:
- 将提交的数据附在url地址后面
$.ajax({ type: "POST", url: "/InviteBid/UpdateBidZRecord/?JudgeBidId=" + JudgeBidId + "&BidRecordId=" + BidRecordId, success: function (jsonResult) { }, error: function (data) { $.messager.alert("提示", "评标办法提交失败!", "warning"); return; } });
- 利用带参数的路由的写法(默认的路由,传递的参数是Id)
打开客户端中的Global.asax.cs文件,会看到如下代码:
public static void RegisterRoutes(RouteCollection routes) { routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); routes.MapRoute( "Default", // 路由名称 "{controller}/{action}/{id}", // 带有参数的 URL new { controller = "Home", action = "Index", id = UrlParameter.Optional } // 参数默认值 ); }
上述是默认的路由,当然也可以编写自定义的路由。这个默认的路由决定了你可以通过如下方式传值,并在Controller中接收。
$('#dg ').datagrid({ url: '/EvaluationTotalScore/GetTotalScoreDataByMore/' + Id });
通过”/”的方式,就把参数附带到url上,看起来简单整洁。对于这个默认的路由你只能传递一个参数,而且必须把参数名命名为Id 。
在Controller里,通过Action方法的参数接收:
public JsonResult GetTotalScoreDataByMore(string Id) { }
主要内容
- 从View向Controller传递对象
$.ajax({ type: "POST", async: false, url: "/InviteBid/UpdateTrueScore", contentType: "application/json", //必须有,表示提交的数据类型 data: JSON.stringify({ "BidJudgeViewModel": [{ 'BidRecordId': BidProId, 'JudgeId': editingId, 'TrueScore': score }] }), success: function (result) { $.messager.alert("提示", "恭喜您,修改成功!", "info"); }, error: function (data) { $.messager.alert("提示", "对不起,修改失败,请稍后再试!", "warning"); return; } });
- 从View向Controller传递对象集合
if (document.getElementById(selRow[i].JudgeId)!=null) { if (document.getElementById(selRow[i].JudgeId).checked) { var checkRow = selRow[i]; //实例化一个评分项目对象 var JudgeItemViewModel = { JudgeId: checkRow.JudgeId, JudgeItemName: checkRow.JudgeItemName, JudgeItemContent: checkRow.JudgeItemContent, Requirement: checkRow.Requirement, Score: checkRow.Score }; //在数组中添加对象 arrayJudgeItems.push(JudgeItemViewModel); } } } //提交数据 $.ajax({ type: "POST", async: false, url: "/InviteBid/AddBidJudgeItem", contentType: "application/json", //必须有,表示提交的数据类型 data: JSON.stringify(arrayJudgeItems), success: function (result) { $.messager.alert("提示", "恭喜您,您的选择保存成功!", "info"); }, error: function (data) { $.messager.alert("提示", "对不起,您的选择保存失败,请稍后再试!", "warning"); return; } });
传递多行数据时,即利用对象数组,然后同样地,通过Json.stringify来序列化。
在Controller中接收时,方法一样,要注意参数中List集合中元素的类型名称和View中对象的名称一致,如本例中都叫JudgeItemViewModel:
public void AddBidJudgeItem(List<JudgeItemViewModel> JudgeItemViewModel) { }
总结
JSON对象有两个方法:stringify()和parse()。在最简单的情况下,这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript。利用stringify()方法传递对象或对象集合,更好地体现数据的封装性,很实用。
1 0
- MVC传递数据-传递对象或对象集合
- Asp.net MVC 传递数据 从前台到后台,包括单个对象,多个对象,集合
- MVC传递List对象
- Bundle传递集合对象
- Parcelable 序列化对象传递数据 以及传递集合demo
- Android Activity之间实现数据(对象,对象集合)传递
- Spring MVC 前台向后台传递 对象集合 (一)
- Spring MVC 前台向后台传递 对象集合(二)
- SharedPreferences对象,传递数据
- spring mvc 传递 list 对象
- spring mvc 传递对象 二
- spring mvc 传递数组对象
- Hessian入门(传递集合,对象)
- Hessian入门(传递集合,对象)
- Activity间传递对象集合
- Intent 传递对象和集合
- Hessian入门(传递集合,对象)
- MVC 5使用TempData(对象)跨视图传递数据
- Apache Web Server -> httpd 的文档根目录 及 访问控制
- Ruby String(2)
- 遍历搜索空间的例子:熄灯问题
- 杭电1005Number Sequence
- Linux、xshell等中文乱码问题
- MVC传递数据-传递对象或对象集合
- Linux自学笔记:在虚拟机上安装Linux操作系统
- 面试问题总结
- 1022冰壶
- java 设计模式 Iterator 容器与容器遍历
- BladeCenter H-bnt交换机的配置
- R语言ggplot包之数据分布汇总
- C#高级编程----小结
- AsyncHttpClient介绍