五、Url辅助方法
Url辅助方法与HTML辅助方法很类似,HTML辅助方法用来产生HTML标签,而Url辅助方法则负责用来产生Url网址。
@Url.Action("About")
最后的输出网址如为,/Home/About。
六、Ajax辅助方法
Ajax是Asynchronous JavaScript and XML的缩写,是目前非常热门的网页开发技术之一,利用Ajax开发技术可以帮助网站减少切换页面的机会、加快网页响应速度、降低网络下载流量,也能让用户经验变得更好,ASP.NET MVC内建了Ajax辅助方法,可以帮助开发人员快速且方便地做到许多Ajax互动效果。
在开始使用Ajax辅助方法之前,必须要先在页面中载入jQuery以及ASP.NET MVC4项目模板内附的jquery.unobtrusive-ajax.js文件才能正常执行。
为了让网站载入适当的JavaScript函数库,必须先在Layout页面载入适当的JavaScript文件才行。事实上,在ASP.NET MVC4的Internet模板中已经在_Layout.cshtml页面中加上了jQuery载入,可以开启母版页面的最下方看到以下这段:
@Scripts.Render("~/bundles/jquery") @RenderSection("scripts", required: false) </body> </html>
可以通过@RenderSection区域来载入jquery.unobtrusive-ajax.js文件。如果需要在页面中使用ASP.NET MVC的Ajax辅助方法,那么可以在每个需要使用Ajax辅助方法的页面最下方加上以下这段@section语法:
@section Scripts { @Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js") }
1.使用Ajax超链接功能
使用Ajax辅助方法和使用HTML辅助方法非常类似,但Ajax辅助方法会比HTML辅助方法多出一个AjaxOptions类型参数,用来控制Ajax执行时的各种参数。
public ActionResult GetTime() { return Content(DateTime.Now.ToString("F")); }
@Ajax.ActionLink("取得目前时间","GetTime",new AjaxOptions{UpdateTargetId="now"}) <div id="now"></div> @section Scripts { @Scripts.Render("~/Scripts/jquery.unobtrusive-ajax.js") }
这里有一点必须特别说明一下,就是通过Ajax远端取得网页内容的过程。浏览器为了让执行效率提升,会预设通过Ajax取得的网页内容只要Ajax调用网址没有改变,且远端的HTTP没有包含缓存相关标头(Headers),那么浏览器就不会再次发出Ajax请求。以上述Ajax.ActionLink辅助方法输出的结果为例,当第一次点击取得/Home/GetTime时会回传当下的服务器时间,当第二次点击同一个网址,按理说应该看到内容更新才对,但结果却永远无法更新,除非你清空浏览器缓存。
如果你的Ajax回传的数据必须即时更新,那么,就必须调整你的Action方法定义,新增一个OutputCache属性(Attribute),强迫浏览器不要缓存这一页的请求,范例如下:
[OutputCache(NoStore=true,Duration=0)] public ActionResult GetTime() { return Content(DateTime.Now.ToString("F")); }
2.使用Ajax表单功能
3.了解AjaxOptions类型
名称说明 class="cl_IC74937" title="公共属性" src="/Upload/Images/2013121303/B89C3333A5CED2A9.gif" alt="公共属性" /> Confirm 获取或设置在提交请求之前显示在确认窗口中的消息。 HttpMethod 获取或设置 HTTP 请求方法(“Get”或“Post”)。 InsertionMode 获取或设置指定如何将响应插入目标 DOM 元素的模式。 LoadingElementDuration 获取或设置一个值(以毫秒为单位),该值控制在显示或隐藏加载元素时的动画持续时间。 LoadingElementId function is loading.">获取或设置在加载 Ajax 函数时要显示的 HTML 元素的 id 特性。 OnBegin 获取或设置要在更新页面之前立即调用的 JavaScript 函数的名称。 OnComplete has been instantiated but before the page is updated.">获取或设置在实例化响应数据之后但在更新页面之前,要调用的 JavaScript 函数。 OnFailure 获取或设置在页面更新失败时要调用的 JavaScript 函数。 OnSuccess 获取或设置在成功更新页面之后要调用的 JavaScript 函数。 UpdateTargetId 获取或设置要使用服务器响应来更新的 DOM 元素的 ID。 Url 获取或设置要向其发送请求的 URL。