前幾天使用jQuery在MVC應用程序中,實現了《jQuery實現兩個DropDownList聯動(MVC)》http://www.cnblogs.com/insus/p/3414480.html 。此次演練也是在此基礎上進行。
Insus.NET想在MVC編輯狀態中實現兩個DropDownList聯動。這與前者沒有多大區別,僅是一個在MVC的添加狀態,另一個是在MVC編輯狀態。后者最主要的是在MVC初次加載時,要把數據的值綁定至DropDownList的選項上。
這段時間,所做的MVC練習,實際上是jQuery的練習,只是在MVC的應用程序中進行。使用jQuery動態產生了html代碼。在jQuery去獲取這些動態產生的html內的標簽或是元素,難度還是相當的大。
既然是編輯,那從MVC編輯開始,需要創建更新存儲過程,創建MVC更新視圖。
修改MVC應用程序下的Entities\FruitEntity.cs,添加一個更新的方法,如下
去控制器修改Controllrs\FruitController.cs,添加兩個ActionResult,一個是返回Views(),一個返回Json,而且第二個附加屬性httpPost.
接下來,應該是創建Update視圖的,但是在此之前,需要先去Index.cshtml視圖添一個鏈接,讓用戶點擊這個鏈接之后,MVC將鏈轉向Update.cshtml視圖。需要修改的地方,無非是下面高亮部分的代碼:
好的,現在可以創建Update.cshtml視圖了:
開始寫jQuery:
先照搬一個接收地址欄的參數方法,也就是說,接收從Index.cshtml視圖傳來的參數。Insus.NET前些篇《MVC應用程序使用jQuery接收Url的參數》http://www.cnblogs.com/insus/p/3410473.html 有詳解過。
下面是上圖自定義函數OutputData(tbody,item)的詳細語法:
上圖中,還有兩個<select>標簽。將是用來顯示category和kind的。這里只是動生一個空的標簽,稍后Insus.NET會對它實現綁定數據。要知道一點,這些select的數據也是來自數據庫。
為了實現dropdownlist,下拉式列表,得需先要寫兩個擴展自定義函數。
下面是實現下拉列表,有一點需要注意的是,代碼均是寫在上面的自定義函數OutputData(tbody,item)內,不然我們是無法獲取jQuery動態產生html的標簽的。
上圖中序號說明:
1,為第一個下拉列表dategory綁定數據。
2,為第二個下拉列表Kind綁定數據。
3,是實現聯動變化事件,第一個下拉列表有選擇變化時,第二個下拉列表根據參數來顯示相應的數據。
4與5,均是第二個下拉列表記錄原category的值,也就是用戶在添加時,所選擇的category值。
6,7與8,也均是為了綁定默認值,讓下拉列表哪一個選項是選中的狀態。而序號8為何是一個0呢? 只要第一個下拉列表變化時,第二個最初的選項均為"選擇..."。
在MVC編輯記錄下的兩個下拉列表聯動實現了。接下來是實現更新的功能,$.ajax也是寫在上面的自定義函數OutputData(tbody,item)內:
整個需要實現的功能,全完成了,看看實時演示操作:
到此練習為止,所有源程序與數據庫,可以在下面鏈接下載得到:
http://download.cnblogs.com/insus/MVC/InsusMVCSiteCS_2013Nov16.rar