如何在分页中保留复选框:PagedList

时间:2012-06-07 06:50:25

标签: asp.net-mvc asp.net-mvc-3

在我的控制器中我有

    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; }
}

提前感谢您的帮助。如果有任何有用的信息我可能会遗漏,请告诉我。 欢呼声

1 个答案:

答案 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中传递该值,我建议您修改我的网格思维