前言

  本文主要介绍从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. python 并发编程入门

    多进程 在Unix/Linux下,为我们提供了类似c中<unistd.h>头文件里的的fork()函数的接口,这个函数位于os模块中,相同与c中类似,对于父进程fork()调用返回子进程I ...

  2. UI各种小控件的用法

    今天给大家列举出来UI中的一些小控件的用法.方便大的学习与使用 一些方法和属性我们能够查看API文档.不必将每一个控件的功能都记住, 由于在使用的过程中,我们能够查看API文档.方便使用,我们仅仅要记 ...

  3. COGS 2580. [HZOI 2015]偏序 II

    COGS 2580. [HZOI 2015]偏序 II 题目传送门 题目大意:给n个元素,每个元素有具有4个属性a,b,c,d,求i<j并且ai<aj,bi<bj,ci<cj, ...

  4. 云:VMware

    ylbtech-云:VMware VMware总部位于美国加州帕洛阿尔托 ,是全球云基础架构和移动商务解决方案厂商,提供基于VMware的解决方案,企业通过数据中心改造和公有云整合业务,借助企业安全转 ...

  5. thinkPHP5 报错session_start(): No session id returned by function解决方法

    这是因为用Redis接管了session状态储存,但是Redis又连接不正常导致的 在服务器上查看Redis运行状态一切正常,set.get也没有问题,最后琢磨了半天才发现是PHPRedis扩展没有安 ...

  6. jQuery对象与DOM对象的区别

    如何判断一个js对象是否一个DOM对象 我们在写js代码时有时需要判断某个对象是不是DOM对象,然后再进行后续的操作,这里我给出一种兼容各大浏览器,同时又算是比较稳妥的一种方法. 要判断一个对象是否D ...

  7. surfaceView实现拍照功能

    1.布局中只有一个SurfaceView和Button,初始SurfaceView通过surface.getHolder获得SurfaceHolder类 SurfaceView sfv= (Surfa ...

  8. JDBC的总结

    JDBC归纳: DriverManger:驱动管理器类 要操作数据库,必须先与数据库创建连接,得到连接对象 public static Connection getConnection(String ...

  9. PHP魔术方法__tostring()篇

    下面是关于__tostring 的运用 header('Content-type:text/html;charset="utf-8"'); /*存在内置方法_tostring()的 ...

  10. linux进程的有效用户ID

    进程的有效用户ID用于文件访问时的权限检查.通常,有效用户ID等于实际用户ID(也就是你登录是的用户ID),有效组ID等于实际组ID. 我们知道每个文件针对不同的user有不同的读.写.执行权限.当执 ...