RouteValueDictionary初始化和MapRoute问题

时间:2012-12-21 17:50:08

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-routing

这两段代码是否相同?

RouteValueDictionary dic=new RouteValueDictionary();
dic.Add("controller", "Home");
dic.Add("action", "Index");
RouteTable.Routes.MapRoute("Test", "Test/Something", dic);

 RouteTable.Routes.MapRoute("Test", "Test/Something", new{controller="Home", action="Index"});

我没有在路线表中获得相同的路线。当我使用第一个选项时,“控制器”和“操作”键不在RouteTable.Routes[0].Defaults.Keys中,而是添加在RouteTable.Routes[0].Defaults.Values

你知道我在第一个选项中做错了吗?

1 个答案:

答案 0 :(得分:3)

你可以传递任何类型的对象作为第三个参数但是传递的对象必须包含在你的url模式中定义的键作为它的属性。例如

 public class test
    {
        public string controller { get; set; }
        public string action { get; set; }
        public string id { get; set; }
    } 

     routes.MapRoute(
            "Default",
            "{controller}/{action}/{id}", 
             new test { action = "Index", controller = "Home", id = "" } 
        );

在这种情况下,您的对象必须包含controlleractionid属性。