2

在我的控制器中,我有

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

在此先感谢您的帮助。如果有任何我可能遗漏的有用信息,请告诉我。干杯

4

1 回答 1

2

我做了类似的事情:
Exetnd你的PagedList实体(我想那是你存储数据的地方,如页码,每页记录的nr,排序方向等)与布尔字段......当你传递页面的nr时'在...您还将布尔版本发送回控制器,这样您就可以将值传递给复选框。
不要忘记更新目标 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>

在网格操作类中,我实现了许多互补的值(例如搜索文本框的字符串,状态:活动/非活动......等)以及您看到的那些(页面大小,数字页面计数,排序方向,排序依据等)。从我的角度来看,这更有意义..但我可能有偏见:)。如果您无法在 DataImportViewModel 中传递该值,我建议您修改我的网格思维

于 2012-06-07T07:08:01.750 回答