Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is this deprecated way of coding? ASP.Net MVC

I am trying to understand how ASP.NET MVC works and I have been recommended to follow the MVC Music Store Tutorial, however I am having problems since I am using different (more current) software.

According to this page I should add a List of genres to my action method inside my StoreController.cs. However according to Visual studio, this piece of code seems to be incorrect or not recognized. The error says: Identifier expected;'new' is a keyword. Should I use different code or do this in my model class instead in some way?

public ActionResult Index()
{
   var genres = new List<Genre>
   {
       new Genre = { Name = "Disco" },
       new Genre = { Name = "Jazz" },
       new Genre = { Name = "Rock" }
   };

return View();
}

Shouldn't something like this do the job?:

public ActionResult Index()
{
    //var genres = new List<Genre>
    //{
    //    new Genre = { Name = "Disco" },
    //    new Genre = { Name = "Jazz" },
    //    new Genre = { Name = "Rock" }
    //};

    var genres = new List<Genre>();
    genres.Add(new Genre() { Name = "Disco" });
    genres.Add(new Genre() { Name = "Jazz" });
    genres.Add(new Genre() { Name = "Rock" });

    return View();
}

And doesn't this constantly add the genres everytime I would run through the Index action method?

like image 533
Barrosy Avatar asked May 07 '17 15:05

Barrosy


1 Answers

Your syntax is incorrect. Your first snippet is an object initializer and is no different than your second block of code where you create a new instance of Genre and assign its Name property, only in the first case you are attempting to assign { Name = "Disco" } to new Genre().

Read more on Object Initializer

public ActionResult Index()
{
    var genres = new List<Genre>
    {
       new Genre { Name = "Disco" },
       new Genre { Name = "Jazz" },
       new Genre { Name = "Rock" }
    };
    return View();
}
like image 81
ColinM Avatar answered Sep 23 '22 07:09

ColinM