【发布时间】:2011-11-08 02:41:21
【问题描述】:
我有一个 MVC 3 应用程序,它正在调用它使用的 Web 服务来调用 Sharepoints API。无论您的结果如何,该调用大约需要 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 时,我在那里有数据,但我们得到了 nada。我觉得我错过了一些愚蠢的东西。有什么想法吗?
【问题讨论】:
标签: asp.net-mvc jquery