参考了别人的文章,我这样尝试去写:

数据源:memberInRoles

  1. var memberInRoles= {};
  2. for(var i=0;i<sureOptions.length;i++){
  3. memberInRoles["memberInRoles["+i+"].UserId"]=sureOptions[i].value;
  4. memberInRoles["memberInRoles["+i+"].RoleId"]="@Model.RoleId";
  5. }

Controller Action

  1. [HttpPost]
  2. public JsonResult UserSelectSave(List<MemberInRole> memberInRoles)
  3. {
  4. return Json(new { data = 0, msg = "" });
  5. }

尝试使用$.ajax

  1. $.ajax({
  2. type: "POST",
  3. dataType: "json",
  4. url: "@Url.Action("UserSelectSave", "RoleManager", new { area = "DeskTop" })",
  5. data: { memberInRoles:memberInRoles },
  6. beforeSend: function () { },
  7. complete: function () { },
  8. success: function (data) {
  9. // format error
  10. if(!data||(!data.status&&data.status!=0)){
  11. alertBox(boxcallback, "0", "提示", "系统参数错误!");
  12. return false;
  13. }
  14. // success
  15. if (data.status == "0") {
  16.  
  17. } else {
  18. alertBox(boxcallback, "0", "提示", data.msg);
  19. return false;
  20. }
  21. },
  22. error: function (data) {
  23. alertBox(boxcallback, "0", "提示", "系统异常,请稍后重试");
  24. return false;
  25. }
  26. });

结果发现接收到的参数为null,继续修改:

  1. $.ajax({
  2. type: "POST",
  3. dataType: "json",
  4. url: "@Url.Action("UserSelectSave", "RoleManager", new { area = "DeskTop" })",
  5. data: { memberInRoles},
  6. beforeSend: function () { },
  7. complete: function () { },
  8. success: function (data) {
  9. // format error
  10. if(!data||(!data.status&&data.status!=0)){
  11. alertBox(boxcallback, "0", "提示", "系统参数错误!");
  12. return false;
  13. }
  14. // success
  15. if (data.status == "0") {
  16.  
  17. } else {
  18. alertBox(boxcallback, "0", "提示", data.msg);
  19. return false;
  20. }
  21. },
  22. error: function (data) {
  23. alertBox(boxcallback, "0", "提示", "系统异常,请稍后重试");
  24. return false;
  25. }
  26. });

结果直接报黄页,刷洗的地址是提交之前的地址,而且把我的参数名称前都加了一个hd字符。

对于“DXWorkFlow.Web.Areas.Desktop.Controllers.RoleManagerController”中方法“System.Web.Mvc.ActionResult
UserManager(Int32, Int32, System.String, System.String)”的不可以为 null
的类型“System.Int32”的参数“parentId”,参数字典包含一个 null 项。可选参数必须为引用类型、可以为 null
的类型或声明为可选参数。
Parameter name: parameters

看别人提交时貌似都是采用$.post方式提交的。

结果使用$.post确可行,实在不明白什么原因。

  1. $.post("@Url.Action("UserSelectSave", "RoleManager", new { area = "DeskTop" })",
  2. memberInRoles,
  3. function(data){
  4. // format error
  5. if(!data||(!data.status&&data.status!=)){
  6. alertBox(boxcallback, "", "提示", "系统参数错误!");
  7. return false;
  8. }
  9. // success
  10. if (data.status == "") {
  11.  
  12. } else {
  13. alertBox(boxcallback, "", "提示", data.msg);
  14. return false;
  15. }
  16. }
  17. );

实在想不明白$.ajax与$.post方式有什么区别。

如果哪位知道$.ajax与$.post区别具体信息,请赐教。

参考文章:

http://haacked.com/archive/2008/10/23/model-binding-to-a-list.aspx/

http://www.hanselman.com/blog/ASPNETWireFormatForModelBindingToArraysListsCollectionsDictionaries.aspx

http://www.cnblogs.com/birdwudi/archive/2010/08/26/1809511.html

asp.net mvc 后台怎么接受前端返回的array list dictionary的更多相关文章

  1. ASP.NET MVC 后台接收集合参数和 jquery ajax 传值

    MVC 接收参数数组(集合)   示例样本:   public class Person {      public string FirstName { get; set; }      publi ...

  2. 序列化json对象,通过ajax传入asp.net mvc后台

    序列化json对象,通过ajax传入asp.net mvc后台 序列化json对象,通过ajax传入asp.net mvc后台   今天遇到一个问题,准备把组织好的json对象通过jquery.aja ...

  3. asp.net mvc 使用Ajax调用Action 返回数据【转】

      使用asp.net mvc 调用Action方法很简单. 一.无参数方法. 1.首先,引入jquery-1.5.1.min.js 脚本,根据版本不同大家自行选择. <script src=& ...

  4. asp.net mvc后台操作之读写xml控制首页动态页面开关显示

    一.背景 在asp.net mvc项目里,用户需要开拓几个活动版面,并以侧栏的方式呈现在首页右侧,几个活动时间不一致,为避免浏览者在活动未开放之时进入未开放的服务页面.因此不仅需要在活动代码中加入限制 ...

  5. 在asp.net mvc模式中使用PartialView返回部分HTML

    PartialView(返回HTML(局部)) 在asp.net mvc中返回View时使用的是ViewResult,它继承自ViewResultBase 同时它还有个兄弟PartialViewRes ...

  6. Asp.Net Mvc - 在OnResultExecut* 拦截Action返回的HTML

    在Asp.Net MVC项目中通过重写ActionFilterAttribute中的方法,我们就可以在轻松的在Action方法执行前后做一些特殊的操作如:[身份认证.日志记录.内容截取等]. 但是我们 ...

  7. Asp.Net Mvc后台数据验证自测小Demo

    使用过MVC的同学一定不陌生MVC的模型绑定和模型校验,使用起来非常方便,定义好Entity之后,在需要进行校验的地方可以打上相应的Attribute,在Action开始时检查ModelState的I ...

  8. 彻底解决ASP.NET MVC 3 404错误码返回302的问题

    转自:http://blog.csdn.net/mycloudke/article/details/9746333 404状态码:,意味着当在页面上显示用户点击不存在,提高用户体验度,搜索引擎会放弃这 ...

  9. ASP.NET MVC如何在Action中返回脚本并执行

    我们都知道在aspx页面的cs文件中只要用Respos.Write("<script></scritp>")就可以在前台执行脚本 但是在MVC中就不一样了, ...

随机推荐

  1. Android开发的七大环节

    Android开发的七大环节   浏览:25 发布日期:2015/10/27 分类:职场感悟 一个完整的Android 开发流程主要包括策划.软件.交互.视觉.测试.运营维护这七大环节,其中的每一个环 ...

  2. web_custom_request函数详解

    在LR中当使用HTML录制方式时,录制的脚本中主要由函数web_link().web_submit_form().web_url().web_submit_data()组成,当使用HTTP录制方式时, ...

  3. 256 terabytes random-access memory

    Computer Systems A Programmer's Perspective Second Edition As we will discuss, the extension of IA32 ...

  4. Delphi dbf文件如何定位记录(即设置Table的RecNum属性来移动到该记录号)

    Delphi的table的RecNum属性,可以用来定位记录,如:self.Table1.RecNum:=23;即可以让数据库记录移动到23号记录上,但这种作用仅限于Paradox数据库,而不是dBA ...

  5. SQL优化(zhuan)

    转自:http://www.jfox.info/SQL-you-hua 数据库的优化问题 一.问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出S ...

  6. Web Storage事件无法触发

    不管是在同源其他页面还是在本页面都不能触发storage事件. <!DOCTYPE html> <html> <head> <meta charset=&qu ...

  7. Sandbox 文件存放规则

    文档1, document2,  document3 一.文件路径介绍 <Application_Home>/AppName.app : 1) This is the bundle dir ...

  8. go 安装

    安装golang centos7 直接安装golang yum install golang centos6需添加软件源,然后再安装 rpm -ivh http://ftp.riken.jp/Linu ...

  9. FastMM、FastCode、FastMove的使用(图文并茂)

    FastMM是一个替换Embarcadero Delphi Win32应用程序的快速内存管理器,以及可以在多线程下使用,不容易产生内存碎片,并且无需使用外部DLL文件就可以支持共享内存. 使用方法:1 ...

  10. Wordpress更换编辑器

    这里我更换为KindEditor 1.下载插件 https://wordpress.org/plugins/kindeditor-for-wordpress/ 2.启动插件 3.在 设置 – Kind ...