程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> 淺談ASP.NET MVC框架

淺談ASP.NET MVC框架

編輯:關於ASP.NET

服務器端的實現原理並不復雜,不過作為解決方案的另一個關鍵部分,如何在客戶端觸發一個AJAX提交也是一個值得思考的話題。 UpdatePanel的方式可謂“全自動”:頁面加載時將會把服務器端的Trigger信息輸出至客戶端,然後在客戶端截獲form的提交事件,並通過 UniqueID或DOM結構等方式來判斷這次提交是否該轉化為AJAX方式。不過在一個ASP.NET MVC頁面中幾乎不會出現產生PostBack的元素,相反會有大量的普通鏈接,它們才是AJAX更新的主要截獲目標。

為此我提供了一些JavaScript代碼,截獲一個鏈接原本的目標地址並將其轉化為一個AJAX請求。我在這裡通過示例中的代碼來展示這種使用方式(這個示例源於Brad Abrams提供的ASP.NET MVC示例,不過我捨棄了Northwind數據庫與Entity Framework,取而代之的是XML數據以及自定義的簡單Model。此外,我也將其移植到ASP.NET MVC框架的0416 Build中):

<% foreach (var category in this.ProductCategories)
{ %>
<li>
<%= Html.ActionLink<ProductsController>(
c => c.List(category, 1),
category,
new { onclick = "mvcAjax.get(this, event)" })%>
</li><%
} %>

這段代碼來自分類列表頁。與AJAX改進之前的代碼相比,唯一的區別就是額外指定了元素的onclick事件(加粗部分)。在onclick事件執行中,這個鏈接默認的跳轉行為將被取消,取而代之的是一個AJAX請求,請求的目標便是ProductsController中名為List的Action。

我們可以使用上面的方式應對普通鏈接,那麼又該如何將一個客戶端from的提交行為也變成AJAX操作呢?以下依舊是示例中的代碼:

<form method="post"
action="<%= Url.Action("Update", new { id = this.Product.ProductID }) %>"
onsubmit="mvcAjax.submit(this, event);">
<table>
<tr>
<td>Name:</td>
<td><%= Html.TextBox("Name", this.Product.Name) %></td>
</tr>
</table>
<input type="submit" value="Save" />
</form>

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved