日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法

發布時間:2023/12/20 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Student類有集合屬性Courses,如何把Student連同集合屬性Courses傳遞給控制器方法?

??? public class Student
??? {
??????? public string StudentName { get; set; }
??????? public IList<Course> Courses { get; set; }
??? }

??? public class Course
??? {
??????? public string CourseName { get; set; }
??? }

□ 思路

在前端拼裝成與Student吻合、對應的對象,再使用JSON.stringify()或$.toJSON()方法轉換成json格式傳遞給控制器方法,使用$.toJSON()方法需要引用一個jQuery的擴展js文件。??

□ Home/Index.cshtml

@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; } ? <a id="btn" href="javascript:void(0)">走你</a> ? @section scripts { <script src="~/Scripts/json.js"></script> <script type="text/javascript"> $(function () { $('#btn').click(function() { var arr = []; ? var obj1 = new Object(); obj1.CourseName = "語文"; arr.push(obj1); ? var obj2 = new Object(); obj2.CourseName = "數學"; arr.push(obj2); ? var student = { StudentName: '小明', Courses: arr }; ? //var json = JSON.stringify(student); var json = $.toJSON(student); ? $.ajax({ url: '@Url.Action("GetStuent","Home")', type: 'POST', contentType: 'application/json; charset=utf-8', data: json, dataType: 'json', success: function (data) { alert(data.StudentName); for (i = 0; i < data.Courses.length; i++) { alert(data.Courses[i].CourseName); } } }); }); }); </script> } ?

?

□ HomeController

public ActionResult Index() { return View(); } ? [HttpPost] public ActionResult GetStuent(Student student) { return Json(student); }

?

□ 把對象轉換成json格式的jQuery擴展

// From: http://www.overset.com/2008/04/11/mark-gibsons-json-jquery-updated/ ? (function ($) { m = { '\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"': '\\"', '\\': '\\\\' }, $.toJSON = function (value, whitelist) { var a, // The array holding the partial texts. i, // The loop counter. k, // The member key. l, // Length. r = /["\\\x00-\x1f\x7f-\x9f]/g, v; // The member value. ? switch (typeof value) { case 'string': return r.test(value) ? '"' + value.replace(r, function (a) { var c = m[a]; if (c) { return c; } c = a.charCodeAt(); return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16); }) + '"' : '"' + value + '"'; ? case 'number': return isFinite(value) ? String(value) : 'null'; ? case 'boolean': case 'null': return String(value); ? case 'object': if (!value) { return 'null'; } if (typeof value.toJSON === 'function') { return $.toJSON(value.toJSON()); } a = []; if (typeof value.length === 'number' && !(value.propertyIsEnumerable('length'))) { l = value.length; for (i = 0; i < l; i += 1) { a.push($.toJSON(value[i], whitelist) || 'null'); } return '[' + a.join(',') + ']'; } if (whitelist) { l = whitelist.length; for (i = 0; i < l; i += 1) { k = whitelist[i]; if (typeof k === 'string') { v = $.toJSON(value[k], whitelist); if (v) { a.push($.toJSON(k) + ':' + v); } } } } else { for (k in value) { if (typeof k === 'string') { v = $.toJSON(value[k], whitelist); if (v) { a.push($.toJSON(k) + ':' + v); } } } } return '{' + a.join(',') + '}'; } }; ? })(jQuery);

轉載于:https://www.cnblogs.com/darrenji/p/3726724.html

總結

以上是生活随笔為你收集整理的使用jQuery异步传递含复杂属性及集合属性的Model到控制器方法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。