私は、3つのモデルからのデータを組み合わせたビューモデルを持っています。ビューモデルのソート?
public async Task<IActionResult> Index(int? id)
{
ViewData["NameSortParm"] = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "";
ViewData["DateSortParm"] = sortOrder == "Date" ? "date_desc" : "Date";
var viewModel = new VendorVM();
viewModel.Vendors = await _context.Vendors
.Include(i => i.Promos)
.Include(i => i.Contacts)
.Include(i => i.Distributors)
.AsNoTracking()
.ToListAsync();
if (id != null)
{
ViewData["VendorID"] = id.Value;
Vendor vendorVM = viewModel.Vendors.Where(
i => i.VendorID == id.Value).Single();
viewModel.Promos = vendorVM.Promos.ToList();
viewModel.Contacts = vendorVM.Contacts.ToList();
viewModel.Distributors = vendorVM.Distributors.ToList();
switch(sortOrder)
{
case "name_desc":
viewModel.Vendors = viewModel.Vendors.OrderByDescending(i => i.VendorName);
break;
case "Date":
viewModel.Vendors = viewModel.Vendors.OrderBy(i => i.Distributors.OrderBy(v => v.LastUpdateDate));
break;
case "date_desc":
viewModel.Vendors = viewModel.Vendors.OrderByDescending(i => i.Distributors.OrderByDescending(v => v.LastUpdateDate)));
break;
default:
viewModel.Vendors = viewModel.Vendors.OrderBy(i => i.VendorName);
break;
}
return View(viewModel);
}
私は、このビューモデルに機能を追加することができソート方法:
public class VendorVM
{
public IEnumerable<Vendor> Vendors { get; set; }
public IEnumerable<Promo> Promos { get; set; }
public IEnumerable<Contact> Contacts { get; set; }
public IEnumerable<Distributor> Distributors { get; set; }
}
ここでコントローラがですか?ベンダー名で並べ替えたい& LastUpdateDate。私はここでこのチュートリアルに従っています:https://docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/sort-filter-page。ベンダー情報のみを並べ替えることができるので、私のビューモデルでは機能しません。私はプロモーション、連絡先&ディストリビューターの情報を並べ替えたいと思います。
何を並べ替えたいですか? – WellerEE
一般に '.OrderBy()'を使ってコレクションをソートします。 「ビューモデルでは機能しません」とはどういう意味ですか?あなたは何を試しましたか?どのように失敗しましたか? – David
@WellerEEの名前と日付 –