Asp Mvc使用Ajax返回部分视图无法正常工作

5

我正在使用MVC3(Razor)和Paging开源代码。当点击一个按钮时,调用包含以下代码的控制器:

  [Authorize(Roles = SystemConstants.ROLE_ADMINISTRATOR)]
  public ActionResult ListUsers(int? page)
  {
     int currentPageIndex = page.HasValue ? page.Value - 1 : 0;
     var products = userToDisplay.ToPagedList(currentPageIndex, 5);
     return PartialView("ListUsersTable", products); 

  }

这应该返回一个名为"ListUsersTable"的PartialView。它确实返回了"ListUsersTable",但是作为整个页面而不是替换DIV。

以下是视图中的代码:

   <div id="listUserToBeUpdated">
       @Html.Partial("ListUsersTable", Model)
   </div>

ListUsersTable内部用于进行Ajax调用的按钮如下所示:
   <div class="pager">
      @Ajax.Pager(Model.PageSize, Model.PageNumber, Model.TotalItemCount, "ListUsers", new AjaxOptions { UpdateTargetId = "listUserToBeUpdated" })
   </div>

有什么想法,为什么代码不能替换DIV,而是返回页面中的代码?
1个回答

6

你引用了哪些JS文件?在ASP.NET MVC3中,他们将AJAX功能从MicrosoftMvcAjax.js更改为jquery.unobtrusive-ajax.js,如果你还没有这样做,请引用后者。

同时,请确保web.config文件中的"UnobtrusiveJavaScriptEnabled"键设置为"true"。


web.config 中的 UnobtrusiveJavaScriptEnabled 已设置为 True。 - Patrick Desjardins
我只有Jquery 1.4.4.js以及引用的jquery-ui和jquery.validate。 - Patrick Desjardins
2
尝试添加对 "jquery.unobtrusive-ajax.js" 文件的引用。 - Felix Martinez
1.6.1版本的事件仍然无法将其作为带有_Layout的页面返回到容器中。看起来Ajax进行了调用,因为当它应该返回部分视图时,我可以在控制器内中断,但浏览器仍然不像Ajax调用一样运行... - Patrick Desjardins
需要 "jquery.unobtrusive-ajax.js"!哇,你能告诉我为什么吗? - Patrick Desjardins
1
我不知道整个故事,但事实是微软最初使用“MicrosoftMvcAjax.js”文件处理他们的AJAX,但在第3版中,他们实现了“UnobtrusiveJavaScriptEnabled”标记以获得更清晰的HTML渲染和更好的SEO,并且现在使用jQuery AJAX插件“jquery.unobtrusive-ajax.js”。 - Felix Martinez

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接