[已解决问题] 请教个基础问题,MVC Route中的一语句
提问时间: 2008-03-20 16:48
悬赏分:50 浏览:420 次

routes.Add(new Route("{action}/{id}", new MvcRouteHandler())
{
    Defaults = new RouteValueDictionary(new { controller = "", action = "", id = "" }),
    Constraints = new RouteValueDictionary { { "id", @"\d+" } }
});

这是在Global中定义一个URL规则,相信已经有许多人用过,标红的这句是添加一个id为数字时才匹配的约束,我的问题是 new RouteValueDictionary { { "id", @"\d+" } } 这句是啥语法 new Class{ {"", ""} }这两对花括号是什么意思,里面的那对是一个匿名类吗?
这是RouteValueDictionary的构造方法:
public RouteValueDictionary();
public RouteValueDictionary(IDictionary<string, object> dictionary);
public RouteValueDictionary(object values);
protected RouteValueDictionary(SerializationInfo info, StreamingContext context);

提问者:Dove.Net - 初学一级
最佳答案
new TypeName { { key1, value1}, {key2, value2}, {key3, value3} } 这个是C# 3.0里带来的新语法,用于对实现了IDictionary接口的类型进行构造和添加初始数据. TypeName 必须实现了IDictionary接口.
2008/3/20 21:41:17 回答者:deerchao


提问者对于答案的评价:感谢deerchao,看来是得看看C#3.0基础了
其它回答(1)
这是3.5的新语法啊。楼主需要补补基础。 这是实例化了RouteValueDictionary类,并且直接给里面的属性赋值了。 值就是参数是id,规则是数字。\d+是正则表达式。
6个月前   回答者:第一控制.NET - 小虾三级
评论
6个月前   Dove.Net :
确实是C#3.0的语法,记得3.0中的匿名类是这种语句 new {"",""}
但不知道new Class {{}} 这是什么语法了
6个月前   Dove.Net :
明白了new RouteValueDictionary { { "id", @"\d+" } }外面那对括号叫Collection initializers集合初始化器
里面这个{ "id", @"\d+" } 即 IDictionary<string, object> dictionary 参数

不知道理解是否正确
   您需要登录以后才能回答!
 

我要提问

我的问题


快到期问题

> 问题排行榜

相关内容

相关链接