2009-08-26 213 views
6

我有一個很好的頁面,可以完成我需要的一切。然而,其中一個元素(部分頁面)需要幾秒鐘的時間,然後我想加載。所以我想要做的就是先顯示沒有這個部分的頁面,但是顯示一個「加載」gif的地方。然後在我的jQuery ...使用jQuery調用控制器動作

$(document).ready(function() { 

    // Call controller/action (i.e. Client/GetStuff) 

}); 

我想調用返回PartialView並更新我的DIV內容我的控制器操作。它基本上在加載時異步調用部分加載。我可以用ActionLink做到這一點,直到它達到我想要做的事情爲止。如果我使用jQuery進行onloand類型的調用,我甚至可以返回PartialView嗎?

回答

10

只需使用$.load

$(document).ready(function() {  
    $('#myDiv').html('<img src="loading.gif"/>') 
       .load('Client/GetStuff'); 
}); 

,將與您的負載指示更換DIV ID =「myDiv」的內容,然後注入客戶端/ GetStuff的輸出到它。

+0

所以我實現了這一點: $( '#refreshGrid')負載( '?/客戶/ GetAttachments ID =' + clientID的); 我的客戶控制器看起來是這樣的: 公衆的ActionResult GetAttachments(INT ID){ // 一些邏輯... 回報PartialView( 「〜/查看/客戶/ ClientAttachmentGridView.ascx」,文件); } alert($('#refreshGrid'))給了我一個對象,alert(clientID)給了我期望的東西。控制器沒有被擊中(否則我會看到一些來自提琴手的Web服務調用)。令人討厭的是我沒有看到任何錯誤消息。 – RailRhoad 2009-08-26 20:07:57

+0

哦,我收回它。我得到一個500小提琴手: 參數字典中包含一個空條目,用於參數'id'不可爲空的類型'System.Int32'方法'System.Web.Mvc.ActionResult GetAttachments(Int32)''CommercialLendingPlatform .Controllers.ClientController」。爲了使參數可選,其類型應該是引用類型或Nullable類型。
參數名稱:參數 – RailRhoad 2009-08-26 20:10:32

+0

奇妙!我需要做一個Client/GetAttachments/clientID!忘記一秒鐘的網址路由。感謝大家! – RailRhoad 2009-08-26 20:13:07

3

我相信你可以。我以前使用jQuery從ASP.NET MVC控制器中獲取JSON,這是我發現的將數據傳遞給客戶端的最令人愉快的方式之一。

我敢肯定,得到一個局部視圖,可能是因爲使用jQuery '負荷' 一樣簡單, '讓' 或 '郵報' 的方法:

使用Load

$("#feeds").load("test.aspx"); 

使用Get

$.get("test.aspx", function(data){ 
    alert("Data Loaded: " + data); 
}); 

使用Post

$.post("test.aspx", function(data){ 
    alert("Data Loaded: " + data); 
}); 
1
$.ajax("MyController/MyAction", function(data) { 
    alert(data); 
}); 

這是一個非常基本的例子;您只需使用AJAX調用控制器,然後就可以將數據彈出到DOM中,或者使用它進行其他操作。

0

我們可以很容易地如下調用使用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 &param2=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