博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC传递数据-传递对象或对象集合
阅读量:7212 次
发布时间:2019-06-29

本文共 3569 字,大约阅读时间需要 11 分钟。

前言

  本文主要介绍从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) { }

总结

  JSON对象有两个方法:stringify()和parse()。在最简单的情况下。这两个方法分别用于把JavaScript对象序列化为JSON字符串和把JSON字符串解析为原生JavaScript。

利用stringify()方法传递对象或对象集合,更好地体现数据的封装性。非常有用。

转载于:https://www.cnblogs.com/clnchanpin/p/7064055.html

你可能感兴趣的文章
How to set Selenium Python WebDriver default timeout?
查看>>
mysql 关键词相关度排序方法详细示例分析
查看>>
ListView的CheckBox实现全部选中/不选中
查看>>
PHP5与MySQL数据库操作
查看>>
关于数据库的水平切分和垂直切分的一些概念(转)
查看>>
[Entity Framework]获取部分字段的查询
查看>>
iOS 怎么设置 UITabBarController 的第n个item为第一响应者?
查看>>
MySQL的索引创建、删除
查看>>
李洪强iOS开发Swift篇—02_变量和常量
查看>>
兼容iOS 10 资料整理笔记
查看>>
spring 标注 详解
查看>>
python 爬虫 scrapy1_官网教程
查看>>
Leetcode: Counting Bits
查看>>
解决“HTTP/1.1 405 Method not allowed”问题
查看>>
mac/unix系统:C++实现一个端口扫描器
查看>>
Pocket Gem OA: Path Finder
查看>>
【小白的CFD之旅】22 好网格与坏网格
查看>>
MySQL--指定浮点型数据的精确度TRUNCATE
查看>>
[Mac入门]如何在Mac下显示Finder中的所有文件
查看>>
电梯停靠问题---------------给你出道题
查看>>