码迷,mamicode.com
首页 > Web开发 > 详细

MVC传递数据-传递对象或对象集合

时间:2017-06-22 12:04:48      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:传递   apr   传递数据   end   解析   grid   gid   class   str   

前言

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

标签:传递   apr   传递数据   end   解析   grid   gid   class   str   

原文地址:http://www.cnblogs.com/clnchanpin/p/7064055.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!