2011-10-31 3 views
0

MapRoute 구현은 두 번째 매개 변수의 {id}을 세 번째 매개 변수의 id =에 어떻게 연결합니까?MapRoute는 익명 형식의 필드 이름에 어떻게 액세스합니까?

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

전달 된 객체를 반영하는 것처럼 간단합니까?

답변

1

예.

에서 채우는 defaults 매개 변수에서 RouteValueDictionary instance을 만듭니다.

당신은 소스에서 볼 수 있습니다

if (values != null) { 
    PropertyDescriptorCollection props = TypeDescriptor.GetProperties(values); 
    foreach (PropertyDescriptor prop in props) { 
     object val = prop.GetValue(values); 
     Add(prop.Name, val); 
    } 
} 
원본, 반사셨어요
+0

? 나는 실제 반사를 한 코드가 TypeDescripter 인 것을보고 흥미를 느꼈다. –

+1

.Net 4에 대한 참조 소스에서 얻었습니다. http://referencesource.microsoft.com/ – SLaks

+0

'TypeDescriptor'는'System.dll'의 표준 라이브러리입니다. 기본적으로 리플렉션을 사용하지만 'ITypedList' 및'ICustomTypeDescriptor '를 통해 다른 작업을 수행 할 수 있습니다. (DataTables에 바인딩하는 방법 [http://blog.slaks.net/2011/01/binding-to-lists-of-datarows.html]) – SLaks

관련 문제