前言

  本文主要介绍从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. java书籍推荐:《Java SE 6 技術手册》

    Java SE 6 技術手册 或  Java SE 6 技術手册 Java SE 6 技術手册 為什麼選擇用 Markdown?仅仅是單純把文件又一次排版太無聊了,不如趁這個機會學些新東西.所以我就藉 ...

  2. mysql设置远程訪问数据库的多种方法

    问题:MySQL权限设置正确,但仍无法远程訪问.通过telnet发现3306port未打开. 分析:MySQL默认仅仅绑定127.0.0.1,即:仅仅有在本机才干訪问3306port. 解决:找到My ...

  3. 转:IOS远程推送通知

    在ios系统中,app应用程序无法在后台完成较多的任务,仅仅允许程序做一些有限的任务(如音视频播放.地理位置信息.voip).然而,如果你想做 一些有趣的事情,并且告知用户,甚至用户没有使用你的app ...

  4. gwt学习资料

    学习资料: 2 3

  5. redis windows安装与使用

    是什么 Redis(Remote Dictionary Server)远程字典服务器 开源免费 C语言编写的 key/value分布式内存数据库,基于内存运行 Redis支持数据的持久化,可以将内存中 ...

  6. Web Api和Asp.Net mvc post请求区别

    这是mvc的,mvc的post请求可以这样写参数,但是web api的不行.而且content_type:"application/json" 必须要写 下面这是web api的: ...

  7. line-height与间距总总

    一点说明(个人吐槽,可以略过) 之所以想写这篇文章,是因为自己工作的经验总结.以前的页面编写极度不注重间距大小,特别是行级元素间距.认为只要差不多好就行了,没必要花那么大的精力去抠几px的小细节.事实 ...

  8. Core Java(七)

    面向对象特性整理 知识点:一. static修饰符 static修饰符可以用来修饰类的成员变量.成员方法和代码块.            . 用static修饰的成员变量表示静态变量,可以直接通过类名 ...

  9. SwipeRefreshLayout的使用,下拉刷新

    1. <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android ...

  10. SQL like查询条件中的通配符处理

    1. SQL like对时间查询的处理方法 SQL数据表中有savetime(smalldatetime类型)字段,表中有两条记录,savetime值为:2005-3-8 12:12:00和2005- ...