2009-06-08 74 views
1

我有一个包含联系人的网格。当用户转到/ contacts/URL时,它会自动显示联系人。在一个单独的框中,人们可以按照不同的标准过滤这些框。我只想刷新网格,而不是整个页面,只要应用不同的标准。C#MVC:搜索网格作为部分视图来启用AJAX返回?

为了实现这个目标,我会将联系人网格本身放在一个局部视图中,并且稍后通过AJAX返回部分视图?

请给我一个正确的方向提示。谢谢:)

回答

2

最直接的方法可能是使用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); 
+0

所以我应该在部分视图中的网格? – Alex 2009-06-08 18:17:00

+0

是的,网格进入局部视图。 – 2009-06-08 18:24:31