使用jQuery调用控制器操作

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

$(document).ready(function() { // Call controller/action (ie Client/GetStuff) }); 

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

只需使用$ .load :

 $(document).ready(function() { $('#myDiv').html('') .load('Client/GetStuff'); }); 

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

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

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

使用负载 :

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

使用Get :

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

使用post :

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

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

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

假设以下是要调用的Controller方法,返回一些类对象的数组。 让class级是’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上显示响应数据。

有关详细信息, 请单击此处