2011-10-31 20 views
0

MapRouteの実装は、2番目のパラメータの{id}を3番目のパラメータの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

関連する問題