总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式
在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";}<h2>Index</h2><div id="result"></div>@section scripts{<script type="text/javascript">$(function() {var person = {Name: 'Darren', Age: 21};$.ajax({type: 'GET',url: '@Url.Action("GetInfo","Home")',data: person,datatype: 'html',success:function(data) {$('#result').html(data);}});});</script>}
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<div><h3>从表单中读出的数据</h3><p><span>Name:</span><span>@Model.Name</span></p><p><span>Age:</span><span>@Model.Age</span></p></div>
□ 传递数组
传递数组的时候有几点需注意:
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";}<h2>Index</h2><div id="result"></div>@section scripts{<script type="text/javascript">$(function() {var ids = [1, 2, 3];$.ajax({type: 'GET',url: '@Url.Action("GetInfo","Home")',data: { myArr: ids.toString() },datatype: 'html',success:function(data) {$('#result').html(data);}});});</script>}
在HomeController中,通过Request.QueryString来获取数组字符串,最后再split转换成集合。
public class HomeController : Controller{public ActionResult Index(){return View();}public ActionResult GetInfo(){string temp = Request.QueryString["myArr"];List<int> result = new List<int>();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<int>){<span>@item.ToString()</span>}
□ 传递表单数据
传递表单数据的时候有几点需注意:
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";}<h2>Index</h2><div><form id="myForm"><div>@Html.Label("Name","姓名")@Html.TextBox("Name","Darren")</div><div>@Html.Label("Age","年龄")@Html.TextBox("Age","21")</div></form><div><button id="btn">提交</button></div></div><div id="result"></div>@section scripts{<script type="text/javascript">$(function() {$('#btn').on("click", function() {$.ajax({type: 'POST',url: '@Url.Action("GetInfo","Home")',data: $('#myForm').serialize(),dataType: 'html',success: function(data) {$('#result').html(data);}});});});</script>}
在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<div><h3>从表单中读出的数据</h3><p><span>Name:</span><span>@Model.Name</span></p><p><span>Age:</span><span>@Model.Age</span></p></div>
□ 传递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";}<h2>Index</h2><div id="result"></div>@section scripts{<script type="text/javascript">$(function() {$.ajax({type: 'GET',url: '@Url.Action("GetInfo","Home")',data: { "Name":"Darren","Age":21},datatype: 'html',success:function(data) {$('#result').html(data);}});});</script>}
在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<div><h3>从表单中读出的数据</h3><p><span>Name:</span><span>@Model.Name</span></p><p><span>Age:</span><span>@Model.Age</span></p></div>
就这样。
总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式的更多相关文章
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
当我们用ASP.NET MVC开发Web应用程序的时候,我们都是将需要呈现的数据通过"Controllers"传输到"View"当中,怎么去实现,下面我介绍一下 ...
- ASP.NET MVC 视图(一)
ASP.NET MVC 视图(一) 前言 从本篇开始就进入到了MVC中的视图部分,在前面的一些篇幅中或多或少的对视图和视图中的一些对象的运用进行了描述,不过毕竟不是视图篇幅说的不全面,本篇首先为大家讲 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- 【ASP.NET MVC系列】浅谈ASP.NET MVC 视图与控制器传递数据
ASP.NET MVC系列文章 [01]浅谈Google Chrome浏览器(理论篇) [02]浅谈Google Chrome浏览器(操作篇)(上) [03]浅谈Google Chrome浏览器(操作 ...
- (转)Asp.Net Mvc视图引擎Razor介绍
Asp.Net Mvc视图引擎Razor介绍 1.Razor介绍 程序园原创,转载请注明:http://www.kwstu.com/ArticleView/dabaomvc_2014082408205 ...
- ASP.NET MVC 视图(五)
ASP.NET MVC 视图(五) 前言 上篇讲解了视图中的分段概念.和分部视图的使用,本篇将会对Razor的基础语法简洁的说明一下,前面的很多篇幅中都有涉及到视图的调用,其中用了很多视图辅助器,也就 ...
- ASP.NET MVC 视图(四)
ASP.NET MVC 视图(四) 前言 上篇对于利用IoC框架对视图的实现进行依赖注入,最后还简单的介绍一下自定义的视图辅助器是怎么定义和使用的,对于Razor语法的细节和辅助器的使用下篇会说讲到, ...
- ASP.NET MVC 视图(三)
ASP.NET MVC 视图(三) 前言 上篇对于Razor视图引擎和视图的类型做了大概的讲解,想必大家对视图的本身也有所了解,本篇将利用IoC框架对视图的实现进行依赖注入,在此过程过会让大家更了解的 ...
- ASP.NET MVC 视图(二)
ASP.NET MVC 视图(二) 前言 上篇中对于视图引擎只是做了简单的演示,对于真正的理解视图引擎的工作过程可能还有点模糊,本篇将会对由MVC框架提供给我们的Razor视图引擎的整个执行过程做一个 ...
随机推荐
- 为什么要使用断路器Hystrix?
为什么需要 Hystrix? 在微服务架构中,我们将业务拆分成一个个的服务,服务与服务之间可以相互调用(RPC).为了保证其高可用,单个服务又必须集群部署.由于网络原因或者自身的原因,服务并不能保证服 ...
- jenkins 使用Git持续构建
为jenkins添加git插件. 在Available tab页中找到Git Plugin 点击下方的Install without Restart安装插件. 插件安装完毕后,我们需要在jenkins ...
- LeetCode(10):正则表达式匹配
Hard! 题目描述: 给定一个字符串 (s) 和一个字符模式 (p).实现支持 '.' 和 '*' 的正则表达式匹配. '.' 匹配任意单个字符. '*' 匹配零个或多个前面的元素. 匹配应该覆盖整 ...
- 【linux】shell中命令替换$(cmd)和符号`cmd`
来源:https://zhidao.baidu.com/question/485498670.html 作用: $(cmd)和`cmd`的作用是相同的,在执行一条命令时,会先将其中的 ``,或者是$( ...
- python的map,filter,reduce学习
python2,python3中map,filter,reduce区别: 1,在python2 中,map,filter,reduce函数是直接输出结果. 2,在python3中做了些修改,输出前需要 ...
- P1020 导弹拦截 dp 树状数组维护最长升序列
题目描述 某国为了防御敌国的导弹袭击,发展出一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到达任意的高度,但是以后每一发炮弹都不能高于前一发的高度.某天,雷达捕捉到敌国的导弹 ...
- 【noip模拟赛3】确定的位置 (map的遍历 位置原理)
描述 hzy很喜欢了解歌曲的排行榜,他每次都从XX网站获知. 由于这个网站想对这个歌曲的排行榜含蓄的告诉大家,组织了一个“猜榜大赛”. 这个网站宣布一些歌曲的信息,那些歌曲在歌曲榜上的前几名 例如: ...
- PHP函数之trigger_error
在程序开发中,如果我们编码不规范,比如调用不存在的变量.语法错误.少了个逗号,这些都会引起系统报错并进行提示,但是今天,突然发现PHP还有这样一个函数,用于自动触发一个报错提示,并且会将报错信息写入p ...
- JAVA死锁的写法
在java开发中,避免不了要加锁控制程序逻辑,但加锁有可能导致死锁,造成线程永远卡死在等待释放锁,后面的代码得不到执行: 在java里,一般是通过synchronized关键字加锁,在jdk1.5版本 ...
- linux学习笔记-6.权限
1.创建a.txt和b.txt文件,将他们设为其拥有者和所在组可写入,但其他以外的人则不可写入 chmod ug+w,o-w a.txt b.txt 2.创建c.txt文件所有人都可以写和执行 chm ...