• [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         }
  • 相关阅读:
    hdu 1455 N个短木棒 拼成长度相等的几根长木棒 (DFS)
    hdu 1181 以b开头m结尾的咒语 (DFS)
    hdu 1258 从n个数中找和为t的组合 (DFS)
    hdu 4707 仓鼠 记录深度 (BFS)
    LightOJ 1140 How Many Zeroes? (数位DP)
    HDU 3709 Balanced Number (数位DP)
    HDU 3652 B-number (数位DP)
    HDU 5900 QSC and Master (区间DP)
    HDU 5901 Count primes (模板题)
    CodeForces 712C Memory and De-Evolution (贪心+暴力)
  • 原文地址:https://www.cnblogs.com/SharpL/p/4598226.html
Copyright © 2020-2023  润新知