Frage

Ich habe zwei Listen, die ich zur Ansicht zurückkehren möchte, "hinzugefügt" und "entfernt". Derzeit kann ich jedoch nur die "hinzugefügte" oder "entfernt" zurückgeben. Wie kann ich beide in einem Objekt zurückkehren? Ich bin sehr neu in MVC, also entschuldige mich, wenn dieser Code chaotisch ist!

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());

    }
War es hilfreich?

Lösung

Geben Sie Ihre Ansicht stark ein und es ist ein zugehöriges Modell, das ein benutzerdefiniertes Objekt ist, das beide Listen enthält. Beachten Sie, dass ein solches Objekt häufig als "ViewModel" bezeichnet wird.

Beispiel:

Ihr ViewModel:

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

Ihr Controller:

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

Deine Ansicht:

@model XXXXX.MyViewModel
...

Andere Tipps

Warum nicht ein ViewModel mit diesen 2 Listen enthalten

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

oder

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

Schauen Sie sich hier an: http://www.howmvcworks.net/onviews/buildingastronglytypedView

Ich denke du willst den ersten.

Versuchen Sie, den dynamischen Typ wie Viewbag zu verwenden

Sie können auf @viewbag in Rasieransicht zugreifen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top