我正在做关于MVC 3的教程,我偶然发现了帮助者@ Html.ActionLink(genre.Name,“Browse”,new {genre = genre.Name})。
现在我明白这些值的作用以及第三个值是一个路由参数值,但这是我第一次看到这种语法因为某些原因而真的让我烦恼。
我的意思是 new {genre = genre.Name} 。我已经明白,“new”在对象/类型声明之前,但是,这次它只是“new”关键字和大括号。这究竟是如何处理的?
答案 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。