MapRoute如何访问匿名类型的字段名称?

时间:2011-10-31 02:47:25

标签: c# asp.net-mvc

MapRoute的实现如何将第二个参数中的{id}连接到第三个参数中的id =

    routes.MapRoute(
        "Default", // Route name
        "{controller}/{action}/{id}", // URL with parameters
        new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
    );

它是否像传入的对象一样简单?

1 个答案:

答案 0 :(得分:1)

它会从defaults参数中创建RouteValueDictionary instance,该参数会从对象的PropertyDescriptor填充自己。

您可以在来源中看到这一点:

if (values != null) { 
    PropertyDescriptorCollection props = TypeDescriptor.GetProperties(values);
    foreach (PropertyDescriptor prop in props) { 
        object val = prop.GetValue(values);
        Add(prop.Name, val);
    }
}