[MVC]Ajax辅助方法

  在开始使用Ajax辅助方法前,必须在页面中载入jQuery以及jquery.unobtrusive-ajax.js文件才能正常执行。

  为了让网站载入适当的JS函数库,必须先让Layout页面载入适当的JS文件,在MVC4模板中,默认已将Jquery文件加入,代码如下:

1         @Scripts.Render("~/bundles/jquery")

2         @RenderSection("scripts", required: false)

  其中@Scripts.Render("~/bundles/jquery")即是载入“jquery-x.x.x.js"文件。因为ajax功能并不是每一页都需要使用,所以在预设中没有载入。如果需要在页面中使用ASP.NET MVC的Ajax辅助方法,可以在每个需要使用Ajax辅助方法的页面上加上如下@section语法:

@section scripts

{

    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")"></script>

}

  

  先前学过@Html.ActionLink辅助方法,用来输出一个超链接,示例:@Html.ActionLink("获取当前的时间","GetTime")

  程序就会跳转到GetTime控制器。那么如果不希望浏览器跳转网页,而是将/Home/GetTime网页的执行结果回传到当前网页的div中,该如何操作呢?

1 @Ajax.ActionLink("取得当前的时间", "GetTime", new AjaxOptions { UpdateTargetId = "now" })

2 

3 <div id="now"></div>

这样一来,当点击ActionLink以后,从GetTime网页的执行结果回传到id为now的div中。但是这种方式的缺陷是,ajax请求只会被触发一次,只要ajax调用的网址没有改变,并且远端的Http没有包含缓存相关标头,那么浏览器就不会发出Ajax请求,即点击ActionLink无效。

  如果你的Ajax回传的数据必须及时更新,那么Action方法定义时,需要添加OutputCache属性,强迫浏览器不要缓存这一页,代码如下:

1         [OutputCache(NoStore=true,Duration=0)]

2         public ActionResult GetTime()

3         {

4             return Content(DateTime.Now.ToString("F"));

5         }

 

你可能感兴趣的:(Ajax)