ASP.NET MVC学习之Ajax(完结)

一.前言

通过上面的一番学习,大家一定收获不少。但是总归会有一个结束的时候,但是这个结束也意味着新的开始。

如果你是从事ASP.NET开发,并且也使用了第三方控件,那么一定会觉得ASP.NET开发ajax十分的简单,而ASP.NET MVC学习到现在页面都是刷新的,所以这节就是ASP.NET MVC的最后一节,通过这节的学习我们将能够实现通过ajax提交表单,下面我们开始继续学习。

 

二.准备工作

1、首先确保引用了以下js库在_Layout中:

 

2、新建一个HomeController,然后在其中写入如下代码:

 1 namespace MvcStudy.Controllers
 2 {
 3     public class HomeController : Controller
 4     {
 5         public ActionResult Index()
 6         {
 7             return View();
 8         }
 9 
10         [HttpPost]
11         public ActionResult Index([Bind(Prefix="name")]String reg)
12         {
13             return PartialView("Result", reg);
14         }
15     }
16 }
View Code

 

3、在Views下新建一个Home文件夹,并在其中新建一个Index视图,同时在Views/Shared中新建一个Result视图,到此为止准备工作完成了。

 

 

三.利用Ajax提交表单

首先我们打开刚才新建的Index视图,然后在其中写入如下代码:

 1 @{
 2     ViewBag.Title = "Index";
 3     AjaxOptions option = new AjaxOptions
 4     {
 5         UpdateTargetId = "targetdiv"
 6     };
 7 }
 8 
 9 @using (Ajax.BeginForm(option))
10 {
11     <div id="targetdiv">
12     </div>
13     @Html.TextBox("name")
14     <div>
15         <input type="submit" value="注册" />
16     </div>
17 }

其中AjaxOptions同来设置ajax相关的参数,而Ajax.BeginForm则表示该表单采用ajax方式提交,其中AjaxOptions中的UpdateTargetId表示完成ajax请求之后内容的输出的容器。

 

打开Views/Shared下的Result视图,写入:

1 @{
2     String text = (string)Model;
3 }
4 
5 @text

 

 

作为简单的示例,笔者直接输出了Model。

然后我们就可以F5运行,在文本框中输入值,最后可以发现页面并没有刷新。但是内容却从指定的div中呈现了,这里的原理很简单,ASP.NET MVC就是利用jquery中的ajax来将表单中的参数提交给指定的动作,然后由这个动作直接返回一段html代码,最后在从指定的id的容器中输出。

 

 

四.实现加载中效果

如今很多网站都会在进行ajax请求过程中呈现一段表示加载中的标记,而ASP.NET MVC中的ajax也提供给我们这个功能,下面我们就修改Index视图:

 1 @{
 2     ViewBag.Title = "Index";
 3     AjaxOptions option = new AjaxOptions
 4     {
 5         UpdateTargetId = "targetdiv",
 6         LoadingElementId = "wait",
 7         LoadingElementDuration = 1000
 8     };
 9 }
10 
11 <div id="wait" style="display:none" >
12     耐心等待会...
13 </div>
14 @using (Ajax.BeginForm(option))
15 {
16     <div id="targetdiv">
17     </div>
18     @Html.TextBox("name")
19     <div>
20         <input type="submit" value="注册" />
21     </div>
22 }
View Code

 

我们通过LoadingElementId来设置加载的标签而LoadingElementDuration则表示动画持续的时间,这里我们写了一个div用来呈现,并且该div的display要设置为none,这样我们重新打开页面再提交一次,就可以看到加载中的效果了。

 

 

五.Ajax链接

很多时候并不总是需要提交表单来实现ajax,也有很多仅仅只是通过点击按钮的方式来进行ajax请求,下面我们就利用Ajax.ActionLink来实现,我们只要在Index视图中的下面填上如下代码:

1 @Ajax.ActionLink("点我","Index",new {name= "oh no"},new AjaxOptions{
2     UpdateTargetId = "targetdiv",
3     Confirm = "确定吗?",
4     HttpMethod = "Post"
5 });

这里就不介绍了,因为和Html.ActionLink的用法十分类似,唯一的区别就是多了一个AjaxOptions参数,我们刷新页面。点击这个链接就可以看到效果了,如果你想问按钮在哪呢,这个问题似乎没有可问性,不是有万能的CSS吗?

 

 

六.Ajax回调

对于部分喜爱写javascript的读者来说,上面这些无疑是灾难。这样你的javascript水平如何体现呢,其实ASP.NET MVC自带的依然有很多问题,所以这个时候我们可以监听它的过程,从而可以更好的完成功能,下面我们监听它的所有事件,我们仍然是修改Index视图的代码:

 1 @Ajax.ActionLink("点我","Index",new {name= "oh no"},new AjaxOptions{
 2     UpdateTargetId = "targetdiv",
 3     Confirm = "确定吗?",
 4     HttpMethod = "Post",
 5     OnBegin = "onbegin",
 6     OnComplete = "oncomplete",
 7     OnFailure = "onfailure",
 8     OnSuccess = "onsuccess"
 9 });
10 
11 <script type="text/javascript">
12     function onbegin() {
13         console.log("开始啦");
14     }
15 
16     function oncomplete(request, status) {
17         console.log("完成了,好下班了");
18     }
19 
20     function onfailure(request, error) {
21         console.log("报错了,要加班了");
22     }
23 
24     function onsuccess(data) {
25         console.log("改好了,走人喽");
26     }
27 </script>
View Code

 

 

这里我们监听了所有的事件,下面我们可以看到正确调用下的输出:

 

当然个人认为ASP.NET MVC的ajax还是有点鸡肋,用个backbone.js框架加上ASP.NET Web API基本上直接秒杀了,当然对于简单的页面用用自带的还是蛮快捷的。

 

七.ASP.NET MVC系列所有链接

ASP.NET MVC学习之路由篇(1)

ASP.NET MVC学习之路由篇(2)

ASP.NET MVC学习之路由篇(3)

ASP.NET MVC学习之过滤器篇(1)

ASP.NET MVC学习之过滤器篇(2)

ASP.NET MVC学习之控制器篇扩展性

ASP.NET MVC学习之视图(1)

ASP.NET MVC学习之视图篇(2)

ASP.NET MVC学习之模型模板篇

ASP.NET MVC学习之模型绑定(1)

ASP.NET MVC学习之模型绑定(2)

ASP.NET MVC学习之模型验证篇

 

 

转载于:https://www.cnblogs.com/yaozhenfa/p/asp_net_mvc_ajax.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/375833.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

认知计算机语言学,什么是认知语言学

文献综述&#xff1a;“语文素养”内涵研究综述“语文素养”内涵研究综述摘要&#xff1a;“语文素养”是新一轮语文课程改革所提出的一个重要概念&#xff0c;其作为语文课程改革的目标与核心理念&#xff0c;挤兑了“语文能力”的核心地位。目前&#xff0c;人们对“语文素养…

data URI scheme及其应用

data URI scheme通俗来讲就是图片直接塞到HTML而不是由HTTP。这样从表面上看会降低一次HTTP的请求&#xff0c;实现了对于网页的优化&#xff08;只是看了其它一些文章data URI由于将图片採用了base 64的编码方式进行表达&#xff0c;所以还是须要进行HTTP去下载内容&#xff0…

Linux 禁用触摸板

1&#xff0c;首先需要查看触摸板&#xff1a; 命令&#xff1a;xinput list 结果&#xff1a; ⎡ Virtual core pointer         id2 [master pointer (3)]    ⎜ ↳ Virtual core XTEST pointer      id4 […

大学新生学计算机推荐电脑,大学新生用什么电脑好呢?

科技的发展日新月异&#xff0c;数码的yi巴为你资讯。今天是7月的开头&#xff0c;我们正式迈入了2019下半年。7月开头也正是许多大多数高考生快忙完志愿填报&#xff0c;开始考虑大学该选择什么电脑的时候。今天yi巴就来跟大家聊聊该大学新生该怎么选择电脑&#xff0c;并给予…

NewCode----句子反转

题目描述 给定一个句子&#xff08;只包含字母和空格&#xff09;&#xff0c; 将句子中的单词位置反转&#xff0c;单词用空格分割, 单词之间只有一个空格&#xff0c;前后没有空格。 比如&#xff1a; &#xff08;1&#xff09; “hello xiao mi”-> “mi xiao hello” …

mac boot2docker certs not valid with 1.7

摘自&#xff1a;https://github.com/boot2docker/boot2docker/issues/824 An error occurred trying to connect: Get https://192.168.59.103:2376/v1.19/containers/json: x509: certificate is valid for 127.0.0.1, 10.0.2.15, not 192.168.59.103 I come with the same p…

对象之间的交互

之前写过一篇随笔《剪刀剪纸》是给一些新同事讲面向对象时用的&#xff0c;当时就感觉有些不顺畅&#xff0c;不过用来给新同事入门足够了就没多想&#xff0c;最近看书时偶尔走神把这件事想起来了&#xff0c;顺便群里讨论时谈到聚合之间的方法调用&#xff0c;于是决定写一篇…

NewCode----数串

题目描述&#xff1a; 设有n个正整数&#xff0c;将他们连接成一排&#xff0c;组成一个最大的多位整数。 如:n3时&#xff0c;3个整数13,312,343,连成的最大整数为34331213。 如:n4时,4个整数7,13,4,246连接成的最大整数为7424613。 输入描述: 有多组测试样例&#xff0c…

计算机跨专业专插本学音乐,欢迎投稿丨专插本可以跨专业考,只要肯坚持!

点击上方△蓝字可关注我们昵称E师姐性别女插本复习资料教材、小红书、CB398、启航等插本关注的公众号、网站等介绍微信公众号居多&#xff1a;专插本资料库、专插本直通车、广东省专插本、插本最前线等等……专科学校和专业广州城市职业学院 会计插本学校和专业广东财经大学华商…

Android,监控ContentProvider的数据改变

有时候应用中需要监听ContentProvider的改变并提供响应&#xff0c;这时候就要利用ContentObserver类了 不管是ContentProvider中实现的,insert,delete,update方法中的任何一个&#xff0c;程序都会调用getContext().getContentResolver().notifyChange(uri,null); 这行代码可用…

[leetcode]Sort List

题目要求&#xff1a;Sort a linked list in O(n log n) time using constant space complexity. 数据结构定义&#xff1a; 1 /** 2 * Definition for singly-linked list. 3 * struct ListNode { 4 * int val; 5 * ListNode *next; 6 * ListNode(int x) : v…

北京市中 高英语听说计算机考,2021年北京高考首次英语听说机考时间确定,共五种题型...

从明年开始&#xff0c;北京市高考统考英语科目增加口语考试&#xff0c;连同之前的听力考试一起&#xff0c;实行一年两考。今天&#xff0c;北京教育考试院发布消息&#xff0c;2021年高考英语听说计算机考试首考将于2020年12月12日进行。12月7日起&#xff0c;考生可登陆北京…

NewCode----彩色宝石项链

题目描述: 有一条彩色宝石项链&#xff0c;是由很多种不同的宝石组成的&#xff0c;包括红宝石&#xff0c;蓝宝石&#xff0c;钻石&#xff0c;翡翠&#xff0c;珍珠等。有一天国王把项链赏赐给了一个学者&#xff0c;并跟他说&#xff0c;你可以带走这条项链&#xff0c;但是…

插件开发-UI插件开发

1.新建类库解决方案&#xff0c;引入命名空间,同时引入要添加UI Form的WebPart(在Portal\UILib目录下)2.继续UFSoft.UBF.UI.Custom.ExtendedPartBase&#xff0c;重写AfterInit()方法&#xff0c;代码如下&#xff0c;便于添加下拉列表按钮&#xff0c;在原单据中UI先新增一下拉…

为博客园选择一个小巧霸气的语法高亮插件

博客园的语法高亮简直蛋疼&#xff0c;于是乎就打算找一个靠谱的插件来改造下。各种百度谷歌&#xff0c;大致得到几个推荐&#xff1a;SyntaxHighlighter&#xff0c;Snippet&#xff0c;Google Code Pretiffy&#xff0c;Highlight&#xff0c;SHJS。其实 SyntaxHighlighter …

计算器软件设计和计算机软件设计区别,求一个模拟计算器程序

# include# include# include# include# define MAX_OPERATOR_NUM 100//运算符栈数组长度# define MAX_DATA_NUM 100//运算数栈数组长度typedef struct OPStack//定义运算符栈{char opStack[MAX_OPERATOR_NUM];int top;}OPStack, *pOPStack;typedef struct DATAStack//定义操作…

python中print语句

学习链接1 学习链接2 1. 如果print语句后面什么符号都没有是个换行语句&#xff0c;也就是是要另起一行。 2. 分号表示下次输出是紧挨着这个光标位置输出. 3. 而逗号是下次输出与这次输出有一定的空格之后接着输出. namekk salutationMr. greetingHello, print greeting,sa…

计算机应用基础论坛贴子怎么发,网络课程论坛中长尾现象的应对策略——以《计算机应用基础》网络课程为例...

摘要&#xff1a;进入21世纪以来,互联网就备受关注.由于我国信息设施资源建设稳步推进,互联网的基础更为坚实,发展更为迅速.据权威数据统计,中国至2009年约拥有130万个BBS论坛,数量为全球第一,然而,作为分享和参与类应用的典型代表(更新博客,发帖/回帖)的使用率仍然偏低.笔者在…

解析Json需要设置Mime

IIS6.0 1.打开IIS添加Mime项 关联扩展名&#xff1a;*.json内容类型(MIME)&#xff1a;application/x-javascript 2.添加映射&#xff1a; 位置在IIS对应站点右键属性&#xff1a;”主目录”-”应用程序设置”-”配置”-”映射”-”添加”&#xff0c;会打开”添加/编辑应用程序…

Using the Transient Fault Handling Application Block

http://msdn.microsoft.com/en-us/library/dn440719(vpandp.60).aspx转载于:https://www.cnblogs.com/fengye87626/p/3772555.html