源碼參考:鏈接:http://pan.baidu.com/s/1pKhHHMj 密碼:mkr4
1:新建-->項目-->Web-->ASP.NET MVC 4 Web 應用程序。命名為:Mvc4MicrosoftAjaxDemo
2:新建控制器:在Controllers文件夾上 右鍵-->添加-->控制器,命名為:HomeController (HomeController .cs)
3:在控制器HomeController中新增Action: GetDate()

1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Threading; 5 using System.Web; 6 using System.Web.Mvc; 7 8 namespace Mvc4MicrosoftAjaxDemo.Controllers 9 { 10 public class HomeController : Controller 11 { 12 // 13 // GET: /Home/ 14 15 public ActionResult Index() 16 { 17 return View(); 18 } 19 20 public ActionResult GetDate() 21 { 22 //休眠1秒鍾,監控前台動作 23 Thread.Sleep(1000); 24 return Content(DateTime.Now.ToString()); 25 } 26 } 27 }
4:新建視圖:在HomeController Action:Index上 右鍵-->添加視圖 命名:Index(默認和Action名稱一致) (Index.cshtml)
5:在視圖Index中添加以下代碼,使用 微軟提供的Ajax請求腳本,如下所示:
5.1:添加 jquery-1.8.2.min.js 和 jquery.unobtrusive-ajax.min.js的引用

1 @{ 2 Layout = null; 3 } 4 5 <!DOCTYPE html> 6 7 <html> 8 <head> 9 <meta name="viewport" content="width=device-width" /> 10 <title>Index</title> 11 <script src="~/Scripts/jquery-1.8.2.min.js"></script> 12 <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script> 13 </head> 14 <body> 15 <div> 16 <h1>MVC 4 Microsoft Ajax Demo</h1> 17 @using (Ajax.BeginForm("GetDate", "Home", new AjaxOptions() { Confirm = "你確定要提交嗎?", HttpMethod = "post", UpdateTargetId = "result", LoadingElementId = "loading", InsertionMode = InsertionMode.Replace })) 18 { 19 <input type="submit" id="btnAjax" name="btnAjax" value="MicrosoftAjaxGetDate" /> 20 } 21 <div id="result"></div> 22 <div id="loading" style="display:none;"> 23 <img src="~/Content/ico_loading2.gif" /> 24 </div> 25 </div> 26 </body> 27 </html>
Unobtrusive Ajax
應當將 JavaScript (或其它腳本)從 Html 中分離出來,就像最初將樣式從 Html 中分離出來一樣道理。簡單來說就是將嵌入在 Html 中的 JavaScript 全部取出來,放在單獨的 js 文件中,
頁面中不要出現任何 onclick、onload
使用 Unobtrusive Ajax 我們最大的收益就是簡單易於維護的代碼(Code is cleaner and easier to maintain)。
基本特點
1.網頁內容和表單使用純 HTML;
2.不借助 JavaScript,表單和超級連接也能正常使用;
3.頁面外觀完全由 CSS 控制,而不是 HTML(不要用 table 來布局) 或 JavaScript;
4.任何人都能通過任何設備(考慮不支持JavaScript的設備)訪問;
Unobtrusive Ajax使用方式
1.引用相應的Javascript文件

1 <script src="@Url.Content("~/Scripts/jquery-1.4.1.min.js")" type="text/javascript"></script> 2 <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script> 3 <script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 4 <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
2.開啟 Unobtrusive JavaScript
2.1 Web.Config文件中默認配置:
2.2 代碼里啟用:
HtmlHelper.ClientValidationEnabled = true;
HtmlHelper.UnobtrusiveJavaScriptEnabled = true;
6:編譯,運行頁面 默認是/Home/Index
6.1:點擊 MicrosoftAjaxGetDate button 出現信息確認頁面
6.2:點擊確認按鈕,顯示loading按鈕(此時View視圖 通過Ajax異步請求控制器的Action)
6.3:loading之后,顯示如下:
Ps: 微軟提供的Ajax請求腳本 基於 jquery.unobtrusive-ajax.min.js 這個文件,但是在MVC 5.0(Visual Studio 2015)中默認沒有Js這個文件
解決方案如下:
1:打開VS2015,新建MVC5.0,使用菜單欄:工具-->Nuget程序包管理器-->程序包管理器控制台
2:用NUGET程序包管理器控制台安裝下面這兩個文件
Install-Package Microsoft.jQuery.Unobtrusive.Ajax –version 3.0.0
(若需要安裝JQuery的話:Install-Package jQuery –version 1.10.2)
3:查看當前項目,Scripts文件夾下已經有 jquery.unobtrusive-ajax.min.js 文件
之后操作和MVC 4.0 (VS2013/VS2012)一致