我有一个包含联系人的网格。当用户转到/ contacts/URL时,它会自动显示联系人。在一个单独的框中,人们可以按照不同的标准过滤这些框。我只想刷新网格,而不是整个页面,只要应用不同的标准。C#MVC:搜索网格作为部分视图来启用AJAX返回?
为了实现这个目标,我会将联系人网格本身放在一个局部视图中,并且稍后通过AJAX返回部分视图?
请给我一个正确的方向提示。谢谢:)
我有一个包含联系人的网格。当用户转到/ contacts/URL时,它会自动显示联系人。在一个单独的框中,人们可以按照不同的标准过滤这些框。我只想刷新网格,而不是整个页面,只要应用不同的标准。C#MVC:搜索网格作为部分视图来启用AJAX返回?
为了实现这个目标,我会将联系人网格本身放在一个局部视图中,并且稍后通过AJAX返回部分视图?
请给我一个正确的方向提示。谢谢:)
最直接的方法可能是使用jQuery AJAX API来请求该方法。然后,您可以使用控制器中的Request.IsAjaxRequest()
属性来查看请求是否是使用AJAX进行的 - 如果是这样,则您只返回Controller操作中的PartialView
。
的某些代码示例:
在你看来,你可以有以下标记:
<div id="gridContainer">
<% Html.RenderPartial("ContactsGrid", ViewData.Model); %>
</div>
(假设你的联系人都包含在Model
对象,并认为是强类型...)
然后,当您要更新网格时,您将调用以下JavaScript代码:
$('#gridContainer').load('/contacts/', { filterParameter: andItsValue });
如果您的路由支持,您也可以在URL中追加过滤器参数。
在你的控制器动作,您在返回前做以下检查:
if(Request.IsAjaxRequest()) {
return PartialView("ContactsGrid", contacts);
}
return View(contacts);
我一般不喜欢只是张贴链接,我喜欢写代码了快速的样本,但是这CodeProject上的文章,我认为确实这项工作恰到好处:http://www.codeproject.com/KB/aspnet/JQueryPartial.aspx。
Something I put together a while ago...
我认为这将让你在正确的方向开始。这是一个使用AJAX和UserControl的简单搜索人员表单。
所以我应该在部分视图中的网格? – Alex 2009-06-08 18:17:00
是的,网格进入局部视图。 – 2009-06-08 18:24:31