将视图模型列表合并为一个

时间:2017-08-14 20:55:30

标签: c# asp.net-mvc

我不确定我是否正确地问这个问题,但我会尽力解释并提供代码。

我在控制器上有一个ActionResult,它可以循环每年可用,打印出每年id的结果,然后循环直到它完成,然后生成最终产品。

我遇到的问题是排序功能。它每年都会排序,而不是作为一张桌子。我认为解决这个问题的最简单方法就是将一个模型合并为一个模型,而不是按年份分隔的多个模型。

我对C#MVC很陌生,所以任何有用的提示,技巧和例子都会有很大的帮助。此外,如果您需要任何其他代码,请询问,我会提供。

控制器

// list of models, because you want ALL of them
            var managementModels = new List<CollectionsManagementViewModel>();
            var setupIds = _repository.GetAllYearSetupIds();

            foreach (var setupId in setupIds)
            {
                // new model created for each setup id
                var managementModel = _repository.GetOverdueBalances(type,page, pageLength,
                         setupId.YearSetupId, balancefilter,
                         sort, direction == Constants.ascending,
                         spreadsheetType);

                managementModel.Title = title + " Management";
                managementModels.Add(managementModel); // add model to list
            }

            // pass collection to view

            return View("CollectionsManagement", new OverpayViewModel { CollectionsManagementViewModels = managementModels});

修改 我在视图中有一个表,它通过单击的列进行排序。目前,当选择列名称时,对所有内容进行排序,但保留数年,例如2015年的4,5,6排序为4,5,6。然后在2016年,您有1,2,3,当您从该列排序时,它不会对它进行排序1,2,3,4,5,6对其进行排序,4,5,6,1,2 ,3因为它每年都会对它进行排序,而不是整个表格。

1 个答案:

答案 0 :(得分:1)

你的问题对于一切都是有点模糊(例如,_repository是由哪些人支持的)。

但假设您已经获得了大量这些CollectionsManagementViewModel,并且您希望在显示它们之前按年份排序:

return View("CollectionsManagement", 
    new OverpayViewModel { 
        CollectionsManagementViewModels = 
            _repository
            .GetAllYearSetupIds()
            .Select(ysi => _repository.GetOverdueBalances(
                type,
                page,
                pageLength,
                ysi.YearSetupId,
                balanceFilter,
                spreadsheetType)    // Assuming the sort is optional
            .OrderBy(vm => vm.Year) // Assuming that the vm has a more sensible year property to sort numerically
    });

真的我必须对您的代码做出很多假设,所以请参阅How to create a minimal, viable, complete example以更好地熟悉您最有可能在这里获得答案