ASP.NET MVC: how to pass more than one object to the View method?

I have finished the NerdDinner tutorial, and now I play a little with the project. The index page displays all upcoming dinners:

    public ActionResult Index()
    {
        var dinners = dinnerRepository.FindUpComingDinners().ToList();
        return View(dinners);
    }

In the DinnerRepository class, I have a method FindAllDinners, and I would like to add to it the index number of the method of all dinners, something like this:

    public ActionResult Index()
    {
        var dinners = dinnerRepository.FindUpComingDinners().ToList();
        var numberOfAllDinners = dinnerRepository.FindAllDinners().Count();
        return View(dinners, numberOfAllDinners);
    }

Of course, this does not work. Since I'm pretty new to OOP, I need help with this.

Thanks,
Ile

+3
source share
5 answers

Create a view model:

public class DinnerViewModel
{
    public List<Dinner> Dinners { get; set; }
    public int NumberOfAllDinners { get; set; }
}

public ActionResult Index()
{
    var dinners = dinnerRepository.FindUpComingDinners().ToList();
    var numberOfAllDinners = dinnerRepository.FindAllDinners().Count();
    return View(new DinnerViewModel { Dinners = dinners, NumberOfAllDinners = numberOfAllDinners } );
}
+10
source

"", , , . , , DinnerViewModel, : Dinners, DinnerCount. DinnerViewModel , Model.Dinners Model.DinnerCount

+3

, LukLed.

, , , , ViewData​​strong > :

ViewData["dinners"] = dinners;
ViewData["numberOfAllDinners"] = 150;
...

. .

+1

dinners.Count.

0

, ViewData, .aspx return. - , Inherits ASP.NET. , " " ( Details.aspx LINQ, , ), "", DinnerController.cs. "" "". . , . , :

, , "return...". , , , , , , ..... " ()" " " ( , ), NerDinner.Model.Dinner/ViewData. , ViewModel, , : "return ( DinnerFormViewModel ()); . , , . .

0

Source: https://habr.com/ru/post/1737852/


All Articles