前言

  本文主要介绍从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传递数据-传递对象或对象集合的更多相关文章

  1. Android剪切板传递数据传递序列化对象数据

    一.剪切板的使用介绍 1. 剪切板对象的创建 使用剪切板会用到,ClipboardManager对象,这个对像的创建不可以使用构造方法,主要是由于没有提供public的构造函数(单例模式),需要使用A ...

  2. MVC总结--数据传递

    View->Controller 1.传统方式,Get方式提交.在Controller中获得client请求: string Name = Request["name"]; ...

  3. 在Activity之间传递数据—传递值对象

    传递有两种方式,一种是类继承自Serializable(Java方式,速度较慢),另一种是类继承自Parcelable(Android方式) 继承自Serializable的时候,实现比较简单,类只需 ...

  4. Spring MVC Json数据传递

    json是一种常见的传递格式,是一种键值对应的格式.并且数据大小会比较小,方便传递.所以在开发中经常会用到json. 首先看一下json的格式: {key1:value1,key2:value2} 每 ...

  5. MVC 子对象数据传递

    1.接受参数 public ActionResult Address(User user) { return View(); } 2. User对象类型 public class User { pub ...

  6. MVC中数据传递 ViewBag的使用

    ViewBag MVC3中 ViewBag.ViewData和TempData的使用和差别 在MVC3開始.视图数据能够通过ViewBag属性訪问.在MVC2中则是使用ViewData.MVC3中保留 ...

  7. MVC 简单数据传递

    Mode: namespace MVCDemo.Models { public class Data { //申明为静态 归类所有,取数据不要实例化 ; public static string st ...

  8. SpringMVC之数据传递一

    之前的博客中也说了,mvc中数据传递是最主要的一部分,从url到Controller.从view到Controller.Controller到view以及Controller之间的数据传递.今天主要学 ...

  9. 在不同Activity之间传递数据的四种常用方法

    在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4. ...

随机推荐

  1. __FUNCTION__, __LINE__ 有助于debug的宏定义

    __FUNCTION__, __LINE__ 今天无意之间看到一段代码,里面有这样一个片段: if (!interface) { err ("%s - error, can't find d ...

  2. 2015.05.04,外语,读书笔记-《Word Power Made Easy》 14 “如何谈论日常现象” SESSION 41

    1. people are the craziest animals bovine(['bәuvain] adj. (似)牛的, 迟钝的),像牛一样placid(['plæsid] adj. 安静的, ...

  3. ”危险“的RESTRICT与GCC的编译优化(编程者对编译器所做的一个“承诺”:使用restrict修饰过的指针,它所指向的内容只能经由该指针修改)

    restrict是C99标准中新添加的关键字,对于从C89标准开始起步学习C语言的同学来说(包括我),第一次看到restrict还是相当陌生的.Wikipedia给出的解释如下: In the C p ...

  4. zzulioj--1637--Happy Thanksgiving Day - WoW yjj!(水)

    1637: Happy Thanksgiving Day - WoW yjj! Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 104  Solved: ...

  5. Java中Array、List、Set、Map

    一.Java中数组 数组用来存放固定数量的同类元素,声明方法: T[] ref,T ref[],如int[] intAry; int intAry[].推荐用T[]的方式,后一种方式为兼容C++习惯写 ...

  6. 最小生成树基础 (Kruskal)

    最小生成树 Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit Status ...

  7. Load和CPU利用率是如何算出来的

    相信很多人都对Linux中top命令里“load average”这一栏困惑过,到底什么是Load,Load代表了什么含义,Load高会有什么后果?“%CPU”这一栏为什么会超过100%,它是如何计算 ...

  8. (转载)Android项目实战(三十二):圆角对话框Dialog

    Android项目实战(三十二):圆角对话框Dialog   前言: 项目中多处用到对话框,用系统对话框太难看,就自己写一个自定义对话框. 对话框包括:1.圆角 2.app图标 , 提示文本,关闭对话 ...

  9. SQL--left join ,inner join, right jion, Limit

    SQL Limit 语句 用于返回规定的数量记录.当数据库中的数据量十分庞大时,可以使用,返回指定的数量记录. 语句如:select * from grade limit 5.返回grade表中的前面 ...

  10. Spring Batch 高级-

    spring batch / 并行处理 / 多线程 分区 1. 并行处理,多线程,分区 http://blog.csdn.net/github_36849773/article/details/692 ...