将两个列表返回到视图c#mvc
我有两个列表要返回到视图,“添加”和“删除”。但是,目前我只能返回“已添加”或“已删除”。如何在一个对象中同时返回两者?我是MVC的新手,所以如果代码混乱,我深表歉意将两个列表返回到视图c#mvc,c#,asp.net-mvc,linq,asp.net-mvc-viewmodel,C#,Asp.net Mvc,Linq,Asp.net Mvc Viewmodel,我有两个列表要返回到视图,“添加”和“删除”。但是,目前我只能返回“已添加”或“已删除”。如何在一个对象中同时返回两者?我是MVC的新手,所以如果代码混乱,我深表歉意 public ActionResult Index() { // Excel upload history var fptexcel = db.FPTStaticDataRatedFinancialAssetBase .OrderBy(e =&
public ActionResult Index()
{
// Excel upload history
var fptexcel = db.FPTStaticDataRatedFinancialAssetBase
.OrderBy(e => e.FORATExcelId)
.Select(e => e.FORATExcelId).Max();
var fptexcelprevious = fptexcel - 1;
var newassets = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
.Where(c => c.FORATExcelId == fptexcel || c.FORATExcelId == fptexcelprevious)
.GroupBy(x => x.Name)
.Where(c => c.Count() == 1)
.Select(y => y.FirstOrDefault()).ToList();
var added = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
.Where(x => x.FORATExcelId == fptexcelprevious)
.Select(x => x).ToList();
var removed = db.FPTStaticDataRatedFinancialAssetBase.OfType<FPTStaticDataRatedFinancialAssetBase>()
.Where(x => x.FORATExcelId == fptexcel)
.Select(x => x).ToList();
return View(newassets.Except(added).ToList());
}
public ActionResult Index()
{
//Excel上载历史记录
var fptexcel=db.FPTStaticDataRatedFinancialAssetBase
.OrderBy(e=>e.FORATExcelId)
.Select(e=>e.FORATExcelId).Max();
var fptexcelprevious=fptexcel-1;
var newassets=db.FPTStaticDataRatedFinancialAssetBase.OfType()
其中(c=>c.FORATExcelId==fptexcel | | c.FORATExcelId==fptexcelprevious)
.GroupBy(x=>x.Name)
.其中(c=>c.Count()==1)
.Select(y=>y.FirstOrDefault()).ToList();
var added=db.FPTStaticDataRatedFinancialAssetBase.OfType()的
.Where(x=>x.FORATExcelId==fptexcelprevious)
.Select(x=>x.ToList();
var removed=db.FPTStaticDataRatedFinancialAssetBase.OfType()的
.其中(x=>x.FORATExcelId==fptexcel)
.Select(x=>x.ToList();
返回视图(newassets.Except(added.ToList());
}
为什么不使用包含这两个列表的ViewModel
return View(new MyModel{List1 = list1,List2 = list2});
或
请看这里:
我想您需要第一个视图。强烈键入视图,使其成为包含两个列表的自定义对象的关联模型。注:此类对象通常称为“视图模型” 例如: 您的viewModel:
public class MyViewModel
{
public List<X> Added { get; set; }
public List<X> Removed { get; set; }
}
你的看法:
@model XXXXX.MyViewModel
...
尝试使用动态类型,如ViewBag
您可以在Razor View中访问@viewbag您希望它们位于同一个列表还是两个单独的列表中?我在视图中有两个html网格,一个用于添加的资产,一个用于删除的资产,所以我想它们需要保持拆分状态。我不建议使用ViewData,第一种方式是最好的方式。作为附录,为了访问视图中的列表,可以使用诸如“@Model.Added”和“@Model.Removed”之类的语法
public ActionResult Index()
{
var viewModel = new MyViewModel
{
Added = ...,
Removed = ...
};
return View(viewModel);
}
@model XXXXX.MyViewModel
...