MVC传递数据-传递对象或对象集合
前言
本文主要介绍从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)
打开client中的Global.asax.cs文件,会看到例如以下代码:
public static void RegisterRoutes(RouteCollection routes){routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Default", // 路由名称"{controller}/{action}/{id}", // 带有參数的 URLnew { 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()方法传递对象或对象集合,更好地体现数据的封装性。非常有用。
MVC传递数据-传递对象或对象集合的更多相关文章
- Android剪切板传递数据传递序列化对象数据
一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用A ...
- MVC总结--数据传递
View->Controller 1.传统方式,Get方式提交.在Controller中获得client请求: string Name = Request["name"]; ...
- 在Activity之间传递数据—传递值对象
传递有两种方式,一种是类继承自Serializable(Java方式,速度较慢),另一种是类继承自Parcelable(Android方式) 继承自Serializable的时候,实现比较简单,类只需 ...
- Spring MVC Json数据传递
json是一种常见的传递格式,是一种键值对应的格式.并且数据大小会比较小,方便传递.所以在开发中经常会用到json. 首先看一下json的格式: {key1:value1,key2:value2} 每 ...
- MVC 子对象数据传递
1.接受参数 public ActionResult Address(User user) { return View(); } 2. User对象类型 public class User { pub ...
- MVC中数据传递 ViewBag的使用
ViewBag MVC3中 ViewBag.ViewData和TempData的使用和差别 在MVC3開始.视图数据能够通过ViewBag属性訪问.在MVC2中则是使用ViewData.MVC3中保留 ...
- MVC 简单数据传递
Mode: namespace MVCDemo.Models { public class Data { //申明为静态 归类所有,取数据不要实例化 ; public static string st ...
- SpringMVC之数据传递一
之前的博客中也说了,mvc中数据传递是最主要的一部分,从url到Controller.从view到Controller.Controller到view以及Controller之间的数据传递.今天主要学 ...
- 在不同Activity之间传递数据的四种常用方法
在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4. ...
随机推荐
- Python游戏server开发日记(二)绕过GIL启动多线程Python环境
说道Python和多线程,非常easy想到GIL,GIL意味着仅仅要是用Python做的多线程程序.就无法利用多个CPU. 经过一些失败的尝试后,我也一度觉得GIL是无解的.我们甚至把注意力转向了Ir ...
- Arduino Yun高速新手教程(大学霸内部资料)
Arduino Yun高速新手教程(大学霸内部资料) 本资料为国内第一本Arduino Yun教程.具体解说Arduino Yun的基本结构.开发环境.系统配置.并着力解说关键功能--Bridge.最 ...
- cpu真实占用率检測工具
windows任务管理器所示CPU占用,一直在不断的变动跳跃 ,并不能反应真实的平均CPU占用率.迅雷下载工具也是一样 ,有时这些知名软件,反倒是没有做的这么人性化,细致.或 许就是不想让人知道 ...
- UI组件之AdapterView及其子类(五)ListView组件和ListActivity
ListView组件是一个显示组件,继承AdapterView基类,前面已经介绍了分别使用ArrayAdapter,SimpleAdapter,扩展BaseAdapter来为LisView提供列表项h ...
- java连接mysql数据库增删改查操作记录
1. 连接数据库.得到数据库连接变量 注意连接数据库的时候 (1)打开DB Browser 新建一个Database Driver,注意加入Driver JARs的时候加入的包,我的是mysql-co ...
- poj3685(嵌套二分)
Matrix Time Limit: 6000MS Memory Limit: 65536K Total Submissions: 4658 Accepted: 1189 Descriptio ...
- Batch Normalization的算法本质是在网络每一层的输入前增加一层BN层(也即归一化层),对数据进行归一化处理,然后再进入网络下一层,但是BN并不是简单的对数据进行求归一化,而是引入了两个参数λ和β去进行数据重构
Batch Normalization Batch Normalization是深度学习领域在2015年非常热门的一个算法,许多网络应用该方法进行训练,并且取得了非常好的效果. 众所周知,深度学习是应 ...
- springboot的常见配置
1.Springboot热部署 热部署的意思就是当任何类发生改变时,通过JVM类加载的方式加载到虚拟机上,这样就不需要我们重启Application类了 做法: 1)添加一个依赖到pom.xml上: ...
- BZOJ 2427 /HAOI 2010 软件安装 tarjan缩点+树形DP
终于是道中文题了.... 当时考试的时候就考的这道题.... 果断GG. 思路: 因为有可能存在依赖环,所以呢 先要tarjan一遍 来缩点. 随后就进行一遍树形DP就好了.. x表示当前的节点.j表 ...
- QlikSense系列(1)——整体介绍
接触QlikSense(3.1 SR1)已经快一年了,在此记录自己的经验心得,为想了解QlikSense的小伙伴提供一个参考. 1.产品介绍 Qlik公司以QlikView产品成名,QlikSense ...