理解MVC3中的Html.ActionLink(...,...,...)语法

时间:2012-11-27 22:29:07

标签: asp.net-mvc-3

我正在做关于MVC 3的教程,我偶然发现了帮助者@ Html.ActionLink(genre.Name,“Browse”,new {genre = genre.Name})。

现在我明白这些值的作用以及第三个值是一个路由参数值,但这是我第一次看到这种语法因为某些原因而真的让我烦恼。

我的意思是 new {genre = genre.Name} 。我已经明白,“new”在对象/类型声明之前,但是,这次它只是“new”关键字和大括号。这究竟是如何处理的?

3 个答案:

答案 0 :(得分:2)

语法new { prop = val }创建匿名类型。它与创建类的实例基本相同,除非您一次性声明类和实例。有些人认为匿名类型不是静态类型或不是类型安全的。事实并非如此。属性的类型是从它们分配的值推断出来的。这种结构经常用于MVC和linq。

请注意,此语法并非特定于MVC。您可以在方便的地方使用它。我在日常编码中大量使用匿名类型。

答案 1 :(得分:1)

这很简单..第一个参数是您要显示的链接,因此genre.Name可以对应 Rock 。第二个参数是action,第三个参数是控制器类。最后一个参数是匿名对象形式的路由值(您永远不会再使用的对象,MVC引擎在这种情况下使用匿名对象)。 所以你的action(方法)需要一个string参数。

例如: “Home”是用户看到的链接(第一个参数),Home(第二个参数)是action类的Controller(方法),它需要string个参数。

class HomeController
{
  public ActionResult GenreAction(string genre)
  {

  }
}

发出请求后,它会变为Home/GenreAction/genre

答案 2 :(得分:0)

这是一个名为Anonymous Type的C#语言功能,如果我没记错的话,会引入C#3.5。