I’m doing a tutorial on MVC 3 and I stumbled upon the helper @Html.ActionLink(genre.Name, “Browse”, new {genre = genre.Name}).
Now I understand what the values do and that the third value is a route parameter value but this is the first time I’m seeing this kind of syntax which is really bugging me for some reason.
What I mean exactly is new {genre = genre.Name}. I’ve come to understand that “new” precedes object/type declaration, however, this time it’s simply the “new” keyword and the curly brackets. How exactly is this processed?
The syntax
new { prop = val }creates an anonymous type. It’s essentially the same as creating an instance of a class, except you’re declaring the class and the instance all in one shot. Some people think that anonymous types are not statically typed or are not type safe. This isn’t true. The types of the properties are inferred from the values they are assigned. This construction is used frequently in MVC and in linq.Note that this syntax is not specific to MVC. You can use it anywhere it’s convenient. I make a fair amount of use of anonymous types in day-to-day coding.