Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将两个列表返回到视图c#mvc_C#_Asp.net Mvc_Linq_Asp.net Mvc Viewmodel - Fatal编程技术网

将两个列表返回到视图c#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 =&

我有两个列表要返回到视图,“添加”和“删除”。但是,目前我只能返回“已添加”或“已删除”。如何在一个对象中同时返回两者?我是MVC的新手,所以如果代码混乱,我深表歉意

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
...