使用jQuery调用控制器操作

时间:2009-08-26 12:48:55

标签: jquery asp.net-mvc ajax asynchronous

我有一个很好的页面可以完成我需要的一切。然而,其中一个元素(部分页面)需要几秒钟,然后我想加载。所以我想做的是首先显示没有这个部分的页面但是在它的位置显示“加载”gif。然后在我的jquery ......

$(document).ready(function() {

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

});

我想调用我的控制器动作来返回PartialView并更新我的div内容。它基本上在加载时异步调用部分加载。我可以使用ActionLink做到这一点,直到它达到了我想要onload的程度。如果我使用jQuery进行onloand类型调用,我甚至可以返回PartialView吗?

4 个答案:

答案 0 :(得分:10)

只需使用$.load

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

这将用你的加载指示符替换div id =“myDiv”的内容,然后将Client / GetStuff的输出注入其中。

答案 1 :(得分:3)

我相信你可以。我之前使用过jQuery从ASP.NET MVC控制器获取JSON,这是我发现向客户端获取数据的最愉快方式之一。

我确信获得部分视图可能就像使用jQuery'load','get'或'post'方法一样简单:

使用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);
});

答案 2 :(得分:1)

$.ajax("MyController/MyAction", function(data) {
    alert(data);
});

这是一个非常基本的例子;你只需使用AJAX调用控制器,然后就可以将数据弹出到DOM中或用它做其他事情。

答案 3 :(得分:0)

我们可以很容易地使用Javascript / Jquery调用Controller方法,如下所示:

假设以下是要调用的Controller方法,返回一些类对象的数组。让班级为'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'中,我们开发了控制器方法url并将其放在名为'strMehodUrl'的变量中,并调用Jquery API的getJSON方法。

receieveResponse是接收控制器方法的响应或返回值的回调函数。

这里我们使用了JSON,因为我们无法使用C#类对象

直接进入javascript函数,所以我们将控制器方法中的结果(arr)转换为JSON对象,如下所示:

Json(arr,JsonRequestBehavior.AllowGet);

并返回那个Json对象。

现在,在Javascript / JQuery的回调函数中,我们可以利用这个结果JSON对象,并相应地在UI上显示响应数据。

更多详情 click here