我不确定我是否正确地问这个问题,但我会尽力解释并提供代码。
我在控制器上有一个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因为它每年都会对它进行排序,而不是整个表格。
答案 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以更好地熟悉您最有可能在这里获得答案