搜索

查看: 3100|回复: 11

[ASP.NET] ASP.NET MVC视图页使用jQuery传递异步数据的几种方式详解

[复制链接]
发表于 2023-5-4 11:30:12 | 显示全部楼层 |阅读模式
Editor 2023-5-4 11:30:12 3100 11 看全部
在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等。
关于数据,JavaScript对象有时候和json长得一模一样,有么有?
var person = {Name: 'darren', Age: 21};
以上是一个JavaScript对象。不过也可以这样表示:
var person = {"Name":"darren","Age":21};
以上JavaScript对象的另外一种表达方式,恰恰也符合json的表达方式。不过,JavaScript对象的写法推荐使用第一种方式。
关于异步ajax发送;data属性表示传递的数据;contentType树形的默认值是application/x-www-form-urlencoded,表示客户端请求类型;dataType表示从服务端返回的类型,可以是text, xml, json, script, html, jsonp。
而在服务端,通过Request.Form属性可以获得从客户端传递来的异步数据。
传递JavaScript对象
在Home/Index.cshtml视图中,使用jQuery发出一个异步请求,把返回的html内容加载到当前视图中。
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Index
@section scripts
{
   
}
HomeController中从Request.Form中获取数据,并返回强类型部分视图。
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult GetInfo()
        {
            //从表单中获取的数据
            var person = new Person();
            person.Name = Request["Name"];
            person.Age = int.Parse(Request["Age"]);
            return PartialView("_DisplayJavaScriptObject", person);
        }
    }
Home/_DisplayJavaScriptObject.cshtml强类型视图展示数据。
@model MvcApplication1.Models.Person
    从表单中读出的数据
    Name:@Model.Name
    Age:@Model.Age

传递数组
传递数组的时候有几点需注意:
1、需要把数组toString()后作为json数据传递,toString()后数组变成以逗号隔开的字符串
2、是以Query String的形式传递给服务端的
3、服务端为了获取集合数据,需要split数组字符串
在Home/Index.cshtml视图中,使用jQuery发送异步GET请求时,数组ids需要toString()转换成"1,2,3"形式的字符串。
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Index
@section scripts
{
   
}
在HomeController中,通过Request.QueryString来获取数组字符串,最后再split转换成集合。
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult GetInfo()
        {
            string temp = Request.QueryString["myArr"];
            List result = new List();
            string[] tempArr = temp.Split(',');
            foreach (var item in tempArr)
            {
                result.Add(int.Parse(item));
            }
            ViewData["t"] = result;
            return PartialView("_DisplayJavaScriptObject");
        }
    }
Home/_DisplayJavaScriptObject.cshtml从ViewData中取出数据遍历集合展示数据。
@foreach (var item in ViewData["t"] as IEnumerable)
{
    @item.ToString()
}
传递表单数据
传递表单数据的时候有几点需注意:
1、通过$('#myForm').serialize()把表单数据封装起来
2、控制器Action方法需要打上[HttpPost]
3、控制器Action方法,可以通过强类型参数来接收,也可通过Request["Name"]的方式获取数据
在Home/Index.cshtml视图中,使用jQuery发送异步POST请求时,使用$('#myForm').serialize()把表单数据封装起来。
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Index
   
        
            @Html.Label("Name","姓名")
            @Html.TextBox("Name","Darren")
        
        
            @Html.Label("Age","年龄")
            @Html.TextBox("Age","21")
        
   
   
        提交
   

@section scripts
{
   
}
在HomeController中,需要在GetInfo方法上打上[HttpPost],用强类型参数来接收数据。
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        [HttpPost]
        public ActionResult GetInfo(Person person)
        {
            return PartialView("_DisplayJavaScriptObject", person);
        }
    }
Home/_DisplayJavaScriptObject.cshtml强类型视图展示数据。
@model MvcApplication1.Models.Person
    从表单中读出的数据
    Name:@Model.Name
    Age:@Model.Age

传递json数据
传递json数据需注意的是:
1、json格式要写对:{ "Name":"Darren","Age":21}
2、控制器Action方法中通过Request["Name"]的方式获取数据
在Home/Index.cshtml视图中,使用jQuery发送异步Get请求。
@{
    ViewBag.Title = "Index";
    Layout = "~/Views/Shared/_Layout.cshtml";
}
Index
@section scripts
{
   
}
在HomeController中通过Request["Name"]的方式获取数据。
   public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult GetInfo()
        {
            //从表单中获取的数据
            var person = new Person();
            person.Name = Request["Name"];
            person.Age = int.Parse(Request["Age"]);
            return PartialView("_DisplayJavaScriptObject", person);
        }
    }
Home/_DisplayJavaScriptObject.cshtml强类型视图展示数据。
@model MvcApplication1.Models.Person
    从表单中读出的数据
    Name:@Model.Name
    Age:@Model.Age

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对知鸟论坛的支持。如果你想了解更多相关内容请查看下面相关链接
回复

使用道具 举报

发表于 2023-6-29 19:16:14 | 显示全部楼层
李志敏 2023-6-29 19:16:14 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-6-29 21:10:16 | 显示全部楼层
ffycxyw2274436 2023-6-29 21:10:16 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

发表于 2023-6-30 18:59:33 | 显示全部楼层
123456825 2023-6-30 18:59:33 看全部
这东西我收了!谢谢楼主!知鸟论坛真好!
回复

使用道具 举报

发表于 2023-7-3 17:24:46 | 显示全部楼层
永远就三年疗 2023-7-3 17:24:46 看全部
楼主发贴辛苦了,谢谢楼主分享!我觉得知鸟论坛是注册对了!
回复

使用道具 举报

发表于 2023-7-4 01:27:34 | 显示全部楼层
计划你大爷计j 2023-7-4 01:27:34 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-7-4 04:26:33 | 显示全部楼层
风来时狂放 2023-7-4 04:26:33 看全部
其实我一直觉得楼主的品味不错!呵呵!知鸟论坛太棒了!
回复

使用道具 举报

发表于 2023-7-4 13:54:56 | 显示全部楼层
塞翁364 2023-7-4 13:54:56 看全部
感谢楼主的无私分享!要想知鸟论坛好 就靠你我他
回复

使用道具 举报

发表于 2023-7-4 16:51:04 | 显示全部楼层
462710480 2023-7-4 16:51:04 看全部
楼主,我太崇拜你了!我想我是一天也不能离开知鸟论坛
回复

使用道具 举报

发表于 2023-7-6 18:10:07 | 显示全部楼层
十二音阶囤 2023-7-6 18:10:07 看全部
既然你诚信诚意的推荐了,那我就勉为其难的看看吧!知鸟论坛不走平凡路。
回复

使用道具 举报

  • 您可能感兴趣
点击右侧快捷回复 【请勿灌水】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则 返回列表

RSS订阅| SiteMap| 小黑屋| 知鸟论坛
联系邮箱E-mail:zniao@foxmail.com
快速回复 返回顶部 返回列表