zoukankan      html  css  js  c++  java
  • [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         }
  • 相关阅读:
    【Loj146】DFS序3-树链剖分
    【BZOJ3083】遥远的国度- 树剖-换根
    树链剖分-树剖换根
    c++ 随机生成树
    【HAOI2015】树上操作-树链剖分
    centos修改dns
    HttpClient
    aiax跨域问题
    伪静态
    springboot父子项目
  • 原文地址:https://www.cnblogs.com/SharpL/p/4598226.html
Copyright © 2011-2022 走看看