在我的控制器中我有
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; }
}
我的视图模型参考是。
@model PagedList.IPagedList<Proj.ViewModels.DataImportViewModel>
每个项目都使用displayFor。这工作正常,但现在我需要添加一个复选框,在整个分页中保留它的值
我想在页面顶部添加一个复选框,而不是应用于从DataImportViewModel返回的每一行。
我认为有两种方法可以做到这一点,但不确定如何实现,也不确定哪种方法最好。创建新的viewModel或将复选框值传递给会话变量是否更好?
我尝试创建一个像这样的新视图模型,但是无法弄清楚如何更改我的返回View(...)代码,甚至不应该在视图中使用@model。
public class DisplayViewModel
{
public IEnumerable<DataImportViewModel> dataImport { get; set; }
public Boolean useDefault { get; set; }
}
提前感谢您的帮助。如果有任何有用的信息我可能会遗漏,请告诉我。 欢呼声
答案 0 :(得分:2)
我做了类似的事情:
使用布尔字段排除你的PagedList实体(我想你存储数据的位置,如页码,每页记录数,排序方向等)...当你传递页面的nr时,你在......你还会将bool版本发送回控制器,这样您就可以将值传递给复选框。
不要忘记更新目标div(targetdiv =您的实体在您的视图中显示的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>
并且在Grid操作类中,我实现了许多互补的值(例如搜索文本框的字符串,状态:活动/不活动等等)以及您看到的值(pagesize,numericpagecount,排序方向,sortBy等)。从我的观点来看,这更有意义..但我可能有偏见:)。如果您无法在DataImportViewModel中传递该值,我建议您修改我的网格思维