【问题标题】:Asp Mvc Return a partial view with Ajax does not workAsp Mvc 使用 Ajax 返回部分视图不起作用
【发布时间】:2011-11-21 10:08:05
【问题描述】:

我正在使用带有 Paging open source code here 的 MVC3 (Razor)。按下具有此代码的控制器按钮时的代码调用:

  [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 而是返回页面中的代码吗?

【问题讨论】:

    标签: c# asp.net asp.net-mvc-3


    【解决方案1】:

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

    还要验证 web.config 文件中的键“UnobtrusiveJavaScriptEnabled”是否设置为“true”

    【讨论】:

    • Web.config 中的 UnobtrusiveJavaScriptEnabled 设置为 True。
    • 我只有 Jquery 1.4.4.js 和 jquery-ui 和 jquery.validate 引用。
    • 尝试添加对“jquery.unobtrusive-ajax.js”文件的引用。
    • 1.6.1 的事件仍然不会在容器中返回它,而是作为没有 _Layout 的页面返回。似乎 Ajax 进行了调用,因为当它应该返回部分但浏览器仍然不像 Ajax 调用时我可以在控制器内部中断...
    • 我不知道整个故事,但问题是微软首先使用“MicrosoftMvcAjax.js”文件处理他们的 AJAX,但在版本 3 中,他们实现了这个“UnobtrusiveJavaScriptEnabled”标签以获得更清晰的 HTML渲染,我假设也更好的 SEO,现在正在使用 jQuery AJAX 插件“jquery.unobtrusive-ajax.js”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多