我有一个很好的页面可以完成我需要的一切。然而,其中一个元素(部分页面)需要几秒钟,然后我想加载。所以我想做的是首先显示没有这个部分的页面但是在它的位置显示“加载”gif。然后在我的jquery ......
$(document).ready(function() {
// Call controller/action (i.e. Client/GetStuff)
});
我想调用我的控制器动作来返回PartialView并更新我的div内容。它基本上在加载时异步调用部分加载。我可以使用ActionLink做到这一点,直到它达到了我想要onload的程度。如果我使用jQuery进行onloand类型调用,我甚至可以返回PartialView吗?
答案 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 ¶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'中,我们开发了控制器方法url并将其放在名为'strMehodUrl'的变量中,并调用Jquery API的getJSON方法。
receieveResponse是接收控制器方法的响应或返回值的回调函数。
这里我们使用了JSON,因为我们无法使用C#类对象
直接进入javascript函数,所以我们将控制器方法中的结果(arr)转换为JSON对象,如下所示:
Json(arr,JsonRequestBehavior.AllowGet);
并返回那个Json对象。
现在,在Javascript / JQuery的回调函数中,我们可以利用这个结果JSON对象,并相应地在UI上显示响应数据。
更多详情 click here