zoukankan      html  css  js  c++  java
  • asp.net mvc 后台怎么接受前端返回的array list dictionary

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

    数据源: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,继续修改:

    $.ajax({
        type: "POST",
        dataType: "json",
        url: "@Url.Action("UserSelectSave", "RoleManager", new { area = "DeskTop" })",
        data: { memberInRoles},
        beforeSend: function () { },
        complete: function () { },
        success: function (data) {
            // format error
            if(!data||(!data.status&&data.status!=0)){
                alertBox(boxcallback, "0", "提示", "系统参数错误!");
                return false;
            }
            // success
            if (data.status == "0") {
                
            } else {
                alertBox(boxcallback, "0", "提示", data.msg);
                return false;
            }
        },
        error: function (data) {
            alertBox(boxcallback, "0", "提示", "系统异常,请稍后重试");
            return false;
        }
    });

    结果直接报黄页,刷洗的地址是提交之前的地址,而且把我的参数名称前都加了一个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!=0)){
     6             alertBox(boxcallback, "0", "提示", "系统参数错误!");
     7             return false;
     8         }
     9         // success
    10         if (data.status == "0") {
    11     
    12         } else {
    13             alertBox(boxcallback, "0", "提示", 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

  • 相关阅读:
    CDQ分治入门
    BSGS算法初探
    简析平衡树(三)——浅谈Splay
    简析平衡树(一)——替罪羊树 Scapegoat Tree
    NOIP2018初赛 解题报告
    【BZOJ1101】[POI2007] Zap(莫比乌斯反演)
    WQS二分学习笔记
    【洛谷2664】树上游戏(点分治)
    同余问题(一)——扩展欧几里得exgcd
    二叉搜索树(BST)学习笔记
  • 原文地址:https://www.cnblogs.com/yy3b2007com/p/5002114.html
Copyright © 2011-2022 走看看