我有两个我想返回视图的列表,“添加”和“删除”。但是目前,我只能返回“添加”或“删除”。如何在一个对象中返回两个?我对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());

    }
有帮助吗?

解决方案

强烈键入您的视图,因此它是一个关联的模型,它是包含两个列表的自定义对象。注意这样的对象通常称为“ ViewModel”。

例子:

您的ViewModel:

public class MyViewModel
{
    public List<X> Added { get; set; }
    public List<X> Removed { get; set; }
}

您的控制器:

public ActionResult Index()
{
    var viewModel = new MyViewModel
    {
        Added = ...,
        Removed = ...
    };
    return View(viewModel);
}

您的观点:

@model XXXXX.MyViewModel
...

其他提示

为什么不拥有包含这两个列表的ViewModel

return View(new MyModel{List1 = list1,List2 = list2});

或者

ViewData["List1"] = list1;
ViewData["List2"] = list2;
return View();

在这里看: http://www.howmvcworks.net/onviews/buildingastronglonglonglytypedview

我想你想要第一个。

尝试使用动态类型,例如ViewBag

您可以在Razor视图中访问@ViewBag

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top