我有一个MVC 3应用程序,它调用消耗Sharepoints API的Web服务。无论您的结果如何,调用大约需要6秒钟,因此我决定使用JQuery添加异步调用以向用户提供等待指示器。我已经完成了几乎所有工作,但是我无法使视图更新已返回的数据。当我到达具有数据的部分视图时,我在ForEach循环中有一个断点,那里有数据并且符合我的期望,但是当我到达浏览器中的视图本身时,表格没有填充。这是我发起AJAX调用的输入按钮被点击时触发的代码:
部分页面如下所示:
$(function () {
$("#ajax-indicator").hide();
});
function getData() {
$("#ajax-indicator").show();
$.ajax({
type: "POST",
url: "/Home/MakeCall",
// the URL of the controller action method
data: null,
// optional data
success: function (result) {
// do something with result
$("#ajax-indicator").toggle();
},
error: function (req, status, error) {
// do something with error
}
});
}
在同一个视图中,有一个指示器div会被隐藏,还有一个按钮和最后一个渲染局部视图。
<div id="ajax-indicator">
<img alt="AJAX Indicator" src="<%= Url.Content("../../images/ajax-loader.gif") %>" />
</div>
<div id='button'>
<% using (Html.BeginForm())
{ %>
<input type="submit" name="submit" value="Get Data" onclick="getData();" />
<% }
%>
</div>
<% Html.RenderPartial("MakeCall", ViewData["viewModel"]); %>
部分页面如下所示:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<AsyncCallTest.Models.SharepointModel>" %>
<table border="1">
<tr>
<td>Folder Name</td>
<td>Link</td>
</tr>
<tr>
<% if (Model != null)
{
foreach (var item in Model.FolderList)
{
%>
<td> FolderName: <%: item.FolderName%></td>
<%
}
}
%>
</tr>
</table>
当我查看item.FolderName时,我有数据,但我们得到了空值。我觉得我可能遗漏了一些小细节。你有什么想法吗?