3

这两段代码是一样的吗?

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

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

4

1 回答 1

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 = "" } 
        );

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

于 2012-12-21T18:09:01.913 回答