我們可以很容易地如下調用使用Javascript/Jquery的控制器方法:
假設以下是被稱爲返回一些類對象的數組控制器方法。讓類是「A」
public JsonResult SubMenu_Click(string param1, string param2)
{
A[] arr = null;
try
{
Processing...
Get Result and fill arr.
}
catch { }
return Json(arr , JsonRequestBehavior.AllowGet);
}
以下是複雜的類型(類)
public class A
{
public string property1 {get ; set ;}
public string property2 {get ; set ;}
}
現在輪到以上由JQUERY控制器的方法調用。以下是調用控制器方法的Jquery函數。
function callControllerMethod(value1 , value2) {
var strMethodUrl = '@Url.Action("SubMenu_Click", "Home")?param1=value1 ¶m2=value2'
$.getJSON(strMethodUrl, receieveResponse);
}
function receieveResponse(response) {
if (response != null) {
for (var i = 0; i < response.length; i++) {
alert(response[i].property1);
}
}
}
在上面的jQuery函數「callControllerMethod」我們開發的控制器方法的網址,並把在一個名爲「strMehodUrl」變量並調用API的Jquery的方法的getJSON。
receieveResponse是接收控制器方法的響應或返回值的回調函數。
在這裏,我們提出使用JSON的,因爲我們不能使用C#的類對象
直接進入javascript函數的,因此,我們所轉換的結果(ARR)在控制器的方法爲JSON對象如下:
Json(arr,JsonRequestBehavior.AllowGet);
並返回該Json對象。
現在在Javascript/JQuery的回調函數中,我們可以利用這個結果的JSON對象並相應地工作以在UI上顯示響應數據。
更多detaill click here
所以我實現了這一點: $( '#refreshGrid')負載( '?/客戶/ GetAttachments ID =' + clientID的); 我的客戶控制器看起來是這樣的: 公衆的ActionResult GetAttachments(INT ID){ // 一些邏輯... 回報PartialView( 「〜/查看/客戶/ ClientAttachmentGridView.ascx」,文件); } alert($('#refreshGrid'))給了我一個對象,alert(clientID)給了我期望的東西。控制器沒有被擊中(否則我會看到一些來自提琴手的Web服務調用)。令人討厭的是我沒有看到任何錯誤消息。 – RailRhoad 2009-08-26 20:07:57
哦,我收回它。我得到一個500小提琴手: 參數字典中包含一個空條目,用於參數'id'不可爲空的類型'System.Int32'方法'System.Web.Mvc.ActionResult GetAttachments(Int32)''CommercialLendingPlatform .Controllers.ClientController」。爲了使參數可選,其類型應該是引用類型或Nullable類型。
參數名稱:參數 – RailRhoad 2009-08-26 20:10:32
奇妙!我需要做一個Client/GetAttachments/clientID!忘記一秒鐘的網址路由。感謝大家! – RailRhoad 2009-08-26 20:13:07