ASP.NET MVC2使用AJAX 如此簡單

來源:互聯網
上載者:User

在ASP.NET MVC編程中使用AJAX功能是非常簡單的。藉助於JQuery架構,你還可以增加其他的優秀特徵並且使AJAX調用特別簡單。本文中,我們將探討這方面的編程內容。

一、檢測一個AJAX請求

在Web表單中,建立AJAX請求典型的方法是使用一個更新面板。當更新面板回寄時,ScriptManager提供一個方法(通過其 isInAsyncPostBack屬性)來檢測伺服器上的AJAX回寄。ASP.NET MVC也提供了類似的機制。因為AJAX能夠調用行為方法,所以我們需要一種方法來檢測一個請求是否是標準的GET/POST操作,還是一個AJAX請求。

我們可以使用一個有用的擴充方法來實現上述檢測,這隻需調用Request.IsAjaxRequest()方法即可。我們知道,一個Web請求是一個針對HttpRequestBase(針對.NET架構HttpRequest對象的一個封裝器)的引用,它也是一個控制器的屬性。故而,我們可以使用IsAjaxRequest()方法來檢查請求資訊,以確保正在向伺服器發出一個AJAX請求。通過這種方式,我們可以正確地檢測出當前請求是一個 ASP.NET請求還是一個jQuery請求。

要實現上述這一點,只需要在你的行為方法中添加下面的代碼。

清單1—檢測一個AJAX請求

if (Request.IsAjaxRequest())

//AJAX request

else

//Standard request

為什麼檢測一個AJAX請求如此重要呢?因為根據行為方法所實現的任務我們處理AJAX請求的方式不同於標準的請求。我們很快會看到這樣的例子。

二、使用Ajax表單

微軟提供了一組AJAX擴充集,其中之一便是Ajax表單。通過此Ajax表單,可以向伺服器發出非同步請求並提供相關的響應內容。用戶端所有的AJAX調用機制都包含在一個MicrosoftMVCAjax指令碼內。清單2給出了一個簡單的Ajax表單樣本。

清單2:使用AJAX.BeginForm擴充

<% using (Ajax.BeginForm("AjaxCustom", new AjaxOptions { UpdateTargetId = "customresponse" })) { %>

Name: <%= Html.TextBox("CustomName")%>

Value: <%= Html.TextBox("CustomValue")%>

<% } %>

上述AJAX表單處理回寄的細節,並使用JavaScript以非同步方式執行,而不是執行一個到伺服器端的標準HTTP回寄。在清單2中,表單把資料回寄到AjaxCustom行為方法,並把表單的值傳遞過去,最後得到返回的響應內容並以某種方式來使用這個結果。

接下來,在行為方法中你可以使用非常現成的Request.IsAjaxRequest方法:

清單3:處理可能的Ajax回寄並提供響應

[HttpPost]

public ActionResult AjaxCustom(FormCollection post)

{

if (Request.IsAjaxRequest())

return Content("Success");

else

return RedirectToAction("Index");

}

如果是一個AJAX請求,則把一個特殊的字串傳遞迴用戶端,並進行相應處理。這一行為是受AjaxOptions集合控制的。上面的清單2中把字串“Success”注入到一個id為“customresponse”的HTML元素中。如果由於某種原因,該請求不是來自一個AJAX調用,行為方法仍可以正常工作—重新導向到另一個視圖中。我們將在以後的文章中討論這些情況。

上面我只是簡要地介紹了使用MS Ajax的情況,因為我相信最好的AJAX方案是當屬使用JQuery。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.