在我的 Controller 中我有
var myTempModel = (from f in db.BA_TEMP_RESHOP_IMPORT
where f.WCCR_ID == WccrId
select new DataImportViewModel
{
//Set properties…
});
return View(myTempModel.ToPagedList(currentPage,
maxRecords));
任何我当前的 ViewModel
public class DataImportViewModel
{
public string WccrId { get; set; }
public string Status { get; set; }
public string Note { get; set; }
}
我的 View 模型引用是。
@model PagedList.IPagedList<Proj.ViewModels.DataImportViewModel>
每个项目都使用displayFor。这工作正常,但现在我需要添加一个复选框,以在分页中保留其值
我想在页面顶部添加一个复选框,而不是应用于从 DataImportViewModel 返回的每一行。
我认为有两种方法可以做到这一点,但不确定如何实现,也不确定哪种方法最好。是创建一个新的 viewModel 还是将复选框值传递到 session 变量中更好?
我尝试创建一个像这样的新 View 模型,但不知道如何更改我的返回 View(...) 代码,甚至不知道应该在 View 中为 @model 使用什么。
public class DisplayViewModel
{
public IEnumerable<DataImportViewModel> dataImport { get; set; }
public Boolean useDefault { get; set; }
}
预先感谢您的帮助。如果我遗漏了任何有用的信息,请告诉我。 干杯
最佳答案
我做过类似的事情:
使用 bool 字段 Exetnd 您的 PagedList 实体(我想这就是您存储页码、每页记录数、排序方向等数据的地方)...当您传递所在页面的 nr 时...您还将把 bool 版本发送回 Controller ,这样您就可以将值传递给复选框。
不要忘记更新目标 div(targetdiv=您的实体在 View 中显示的 div)。
我的解决方案涉及这样的事情:
public class GridModel<T> : GridOperations
{
// Constructor
public GridModel()
{
// Define any default values here...
this.PageSize = 20;
this.NumericPageCount = 20;
}
public IEnumerable<T> Data { get; set; }
并将数据传递到我的模型,如下所示:
@model Proj.ViewModels.GridModel<Proj.ViewModels.DataImportViewModel>
在网格操作类中,我实现了许多互补的值(例如搜索文本框的字符串,状态:事件/不活动...等)以及您看到的值(页面大小,数字页面计数,排序方向、排序依据等)。从我的角度来看,这更有意义..但我可能有偏见:)。如果您无法在 DataImportViewModel 中传递该值,我建议您按照我的网格思维进行修改
关于asp.net-mvc - 如何跨分页保留复选框: PagedList,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10926976/