【发布时间】:2014-10-07 16:56:31
【问题描述】:
我是 MVC(和 Web 开发)的新手。目前,在我的应用程序中使用 MVC 5。
我有一个 Web 应用程序,用户界面如下图所示。基本上,它是一个单页应用程序,我需要根据顶部单选按钮的用户选择来加载底部的网格。如果单击最新,则最新的用户数据将绑定到网格。同样,如果选择历史数据,则历史数据将绑定到同一个网格。
我在 HomeController.cs 中的操作如下所示。
public ActionResult Index()
{
var viewModel = new ViewModel();
List users = GetLatestUsers();
viewModel.Users = users;
return View(viewModel);
}
[HttpPost]
public ActionResult Filter(ViewModel postData)
{
List users = GetHistoricUsers();
viewModel.Users = users;
return View(viewModel);
}
按照评论中的要求进行更详细的说明,在我看来,我绑定到网格是这样的
@Html.Grid(Model).Columns(columns =>
{
/* Adding not mapped column, that renders body, using inline Razor html helper */
columns.Add()
.Encoded(false)
.Sanitized(false)
.SetWidth(30)
.RenderValueAs(d =>
@<b>
@Html.ActionLink("Edit", "Index")
</b>);
/* Adding "OrderID" column: */
columns.Add(o => o.OrderID)
.Titled("Number")
.SetWidth(100);
/* Adding "Vip customer" column: */
columns.Add(o => o.Customer.IsVip)
.Titled("Vip customer")
.SetWidth(150)
.RenderValueAs(o => CustomRenderingOfColumn(o));
}).SetRowCssClasses(item => item.Customer.IsVip ? "warning" : string.Empty).WithPaging(15).Sortable().Filterable().WithMultipleFilters()
现在我面临的问题是,如果用户因为Filter 操作而查看历史数据,我会将历史数据加载到网格中。如果用户现在通过使用网格中的分页控件导航到下一页,它会触发回发,因此会执行索引操作并始终加载最新数据。理想情况下,我应该留在同一页面并在第 2 页显示下一个历史数据。
请帮助我处理这种情况。
仅供参考:我将 Grid.Mvc 用于数据网格,将 Bottstrap 用于 UI 控件。
【问题讨论】:
-
“绑定到网格”需要扩展才能使这个问题有意义。
-
@spender 我添加了有关如何将其绑定到视图和网格的示例。我还在问题底部的注释中添加了指向 Grid.MVC 演示的超链接。希望对您有所帮助。
标签: c# jquery asp.net-mvc postback