2017-05-07 45 views
5

我想了解如何ASP.NET MVC的作品,我已被建议遵循MVC Music Store Tutorial,但是我有问题,因为我使用不同(更流行)的软件。这是不赞成使用的编码方式吗? ASP.Net MVC

根据this页面我应该在我的StoreController.cs里添加一个List类型的动作方法。但是根据Visual Studio的说法,这段代码似乎不正确或者无法识别。错误说:Identifier expected;'new' is a keyword。我应该使用不同的代码,还是以某种方式在模型类中执行此操作?

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

return View(); 
} 

不应该是这样做的工作?:

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

而且没有这个不断补充流派每次我将通过Index操作方法运行?

回答

5

您的语法不正确。您的第一个片段是一个对象初始值设定项,并且与第二个代码块没有区别,您创建Genre的新实例并指定其Name属性,仅在第一种情况下您试图将{ Name = "Disco" }指定为new Genre()

了解更多关于Object Initializer

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

啊我看到我做错了,使用“=” “符号在括号前面。 – Barrosy

2

要回答你的第二个问题,是的,那名单(这是完全在内存中),将得到创建,然后丢弃每一个你的行动运行时。它仅仅是示例代码,如果你的应用程序更复杂,你可能会从别的地方得到这样的列表。此外,代码似乎没有对这个列表做任何事情,但我认为这是遗漏了 - 你可能希望它作为模型或视图袋等的一部分等

相关问题