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}", // 带有參数的 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()方法传递对象或对象集合,更好地体现数据的封装性。非常有用。
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. ...
随机推荐
- __FUNCTION__, __LINE__ 有助于debug的宏定义
__FUNCTION__, __LINE__ 今天无意之间看到一段代码,里面有这样一个片段: if (!interface) { err ("%s - error, can't find d ...
- 2015.05.04,外语,读书笔记-《Word Power Made Easy》 14 “如何谈论日常现象” SESSION 41
1. people are the craziest animals bovine(['bәuvain] adj. (似)牛的, 迟钝的),像牛一样placid(['plæsid] adj. 安静的, ...
- ”危险“的RESTRICT与GCC的编译优化(编程者对编译器所做的一个“承诺”:使用restrict修饰过的指针,它所指向的内容只能经由该指针修改)
restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C p ...
- zzulioj--1637--Happy Thanksgiving Day - WoW yjj!(水)
1637: Happy Thanksgiving Day - WoW yjj! Time Limit: 1 Sec Memory Limit: 128 MB Submit: 104 Solved: ...
- Java中Array、List、Set、Map
一.Java中数组 数组用来存放固定数量的同类元素,声明方法: T[] ref,T ref[],如int[] intAry; int intAry[].推荐用T[]的方式,后一种方式为兼容C++习惯写 ...
- 最小生成树基础 (Kruskal)
最小生成树 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Submit Status ...
- Load和CPU利用率是如何算出来的
相信很多人都对Linux中top命令里“load average”这一栏困惑过,到底什么是Load,Load代表了什么含义,Load高会有什么后果?“%CPU”这一栏为什么会超过100%,它是如何计算 ...
- (转载)Android项目实战(三十二):圆角对话框Dialog
Android项目实战(三十二):圆角对话框Dialog 前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...
- SQL--left join ,inner join, right jion, Limit
SQL Limit 语句 用于返回规定的数量记录.当数据库中的数据量十分庞大时,可以使用,返回指定的数量记录. 语句如:select * from grade limit 5.返回grade表中的前面 ...
- Spring Batch 高级-
spring batch / 并行处理 / 多线程 分区 1. 并行处理,多线程,分区 http://blog.csdn.net/github_36849773/article/details/692 ...