AJax技术

ASP.Net MVC开发基础学习笔记:四、校验、AJAX与过滤器(2)

字号+ 作者:H5之家 来源:H5之家 2017-03-28 09:11 我要评论( )

在View中增加一段JQuery代码,为btnJQuery按钮绑定一个Click事件: $( function () {$( "#btnJQuery").click( function () {$.post( "/Home/GetServerDate", {}, function (data) { if (data != null ) {$( "#spTim

  在View中增加一段JQuery代码,为btnJQuery按钮绑定一个Click事件:

$(function () { $("#btnJQuery").click(function () { $.post("/Home/GetServerDate", {}, function (data) { if (data != null) { $("#spTime").html(data); } }); }); });

  这里通过JQuery AJAX发送一个异步的POST请求,获取服务器时间结果,并将其显示在span标签内:

  至此,一个使用JQuery Ajax的MVC页面就完成了。但是,这仅是一个最简单的AJAX示例,在实际开发中往往比较复杂一点。

  需要注意的是:

  (1)如果你在JQuery AJAX中使用的是get方式的提交,那么在在使用Json返回JsonResult时注意要将第二个参数设置允许Get提交方式:return Json("",JsonRequestBehavior.AllowGet),否则你用get方式是无权执行要请求的Action方法的。

  (2)在Ajax开发中要注意Ajax方法体内的参数设置正确,特别是参数名要和Action中的参数名保持一致;

  (3)如果在Action中为其设置了[HttpPost]或[HttpGet],那么提交方式要跟Action打的标签一致;

2.2 使用Microsoft AJAX方式

  在ASP.Net MVC中除了可以使用JQuery AJAX外,Microsoft为我们提供了另一套实用且更简单的AJAX方案,我们姑且称其为:Microsoft AJAX方式。

  (1)首先:

  需要将微软提供的js脚本引入到页面中:其实就是jquery.unobtrusive-ajax.js

  确保在Web.config中启用了Unobtrusive JavaScript

<add key=value=/>

  (2)其次,使用Ajax.BeginForm方法构造一个form表单:

Microsoft Ajax方式 @using (Ajax.BeginForm("GetServerDate", "Home", new AjaxOptions() { HttpMethod = "POST", Confirm = "您确定要提交?", InsertionMode = InsertionMode.Replace, UpdateTargetId = "spResult", OnSuccess = "afterSuccess", LoadingElementId="loading" })) { 用户名:密 码:正在获取中,请稍候... }

  这里需要注意的是:

  ①Ajax.BeginForm没有提供闭合的方法,需要使用Using配合关闭;

  ②AjaxOptions参数的设置:

  HttpMethod代表此次AJAX请求到底是POST方式还是GET方式?这里是POST方式;

  Confirm代表点击提交按钮后提出的确认对话框,并给出用户给定的提示语,这里是:您确定要提交?

  InsertionMode代表请求获得后的数据是要替换还是追加,一般选择替换,即Replace; 

  UpdateTargetId代表需要替换的div标签的Id,这里是一个span标签,代表需要显示的信息都显示在这个span内;

  OnSuccess代表请求成功后所需要执行的回调方法,是一个js方法,可以自定义,这里是一个function afterSuccess()的方法;

function afterSuccess(data) { //alert("您已成功获取数据:" + data); }

  LoadingElementId="loading"是一个很有意思的属性,代表在ajax请求期间为了提供良好的用户体验,可以给出一个正在加载中的提示,而这个LoadingElementId则代表一个提示的div区域的Id。这里主要是指id为loading的这个div,其中有一张gif图片及一句话:正在获取中,请稍等...的提示。

正在获取中,请稍候...

  为了显示加载提示的效果,我们人为地修改一下Action方法,使用Thread.Sleep(3000)来延迟一下请求返回时间

public ActionResult GetServerDate() { System.Threading.Thread.Sleep(3000); return Content(DateTime.Now.ToString()); }

  好了,现在我们可以看一下效果如何:

  到此,我们的Microsoft AJAX就算完成了一个最简单的Demo了。那么,我们不禁想知道Microsoft AJAX是怎么做到的?跟校验一样,我们浏览一下生成的form表单就知道了:

  原来我们在AjaxOptions中所设置的参数也被解析成了form的自定义属性,它们的对应关系如下:

三、为AOP而生 — ASP.Net MVC默认的过滤器 3.1 过滤器初步   大一点的项目总会有相关的AOP面向切面的组件,而MVC(特指:Asp.Net MVC,以下皆同)项目中Action在执行前或者执行后我们想做一些特殊的操作(比如身份验证,日志,异常,行为截取等),而不想让MVC开发人员去关心和写这部分重复的代码。那么,我们可以通过AOP截取实现,而在MVC项目中我们就可以直接使用它提供的Filter的特性帮我们解决,不用自己实现复杂的AOP了。 AOP:Aspect Oriented Programming(AOP)是较为热门的一个话题。AOP,国内大致译作“面向切面编程”。针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合性的隔离效果。   利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。主要的功能是:日志记录,性能统计,安全控制,事务处理,异常处理等等。 3.2 微软提供的几种默认过滤器

  微软默认为我们提供了四种类型的过滤器(Filter),如下图所示:

  这里,我们主要来看看ActionFilter(Action过滤器)和ExceptionFilter(异常过滤器)的使用:

  (1)Action Filter

  ActionFilterAttribute默认实现了IActionFilter和IResultFilter。而ActionFilterAttribute是一个Abstract的类型,所以不能直接使用,因为它不能实例化,所以我们想使用它必须继承一下它然后才能使用。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • ASP.NET WebForm使用Ajax

    ASP.NET WebForm使用Ajax

    2017-03-24 17:00

  • 《学习ASP.NET 2.0和AJAX》pdf书下载

    《学习ASP.NET 2.0和AJAX》pdf书下载

    2017-03-16 14:04

  • Asp.net中的AJAX学习记录之二 体会AJAX页面刷新的不同

    Asp.net中的AJAX学习记录之二 体会AJAX页面刷新的不同

    2017-03-12 18:03

  • ASP.NET AJAX学习记要(1)-如何下手

    ASP.NET AJAX学习记要(1)-如何下手

    2017-03-11 12:03

网友点评