这种编码方式已经过时了吗?ASP.Net MVC

5

我正在尝试了解ASP.NET MVC的工作原理,并被推荐学习MVC音乐商店教程,但由于我使用的是不同(更新)的软件,所以遇到了问题。

根据这个页面的说明,我应该在我的StoreController.cs中的动作方法里添加一个流派(genres)的列表。但是根据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操作方法时都不断添加流派?

2个回答

5
您的语法有误。您的第一段代码是一个对象初始化程序,与您创建一个新实例Genre并分配其Name属性的第二段代码没有区别,只是在第一种情况下,您尝试将{ Name =“Disco” } 分配给new Genre()
欲了解更多信息,请参阅对象初始化程序
public ActionResult Index()
{
    var genres = new List<Genre>
    {
       new Genre { Name = "Disco" },
       new Genre { Name = "Jazz" },
       new Genre { Name = "Rock" }
    };
    return View();
}

啊,我明白我做错了什么,是在括号前面使用了“=”符号。 - Barrosy

2
回答你的第二个问题,是的,这个列表(完全在内存中)会在每次运行操作时创建然后丢弃。它只是样例代码,如果你的应用程序更复杂,你可能会从其他地方获取类似的列表。此外,代码似乎没有对这个列表做任何事情,但我假设这是被省略了 - 你可能想将它作为模型或视图包含在内。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接