私のasp.net mvcプロジェクトのルート宣言を簡略化します。だから私はこれを行ういくつかの方法を作成しました。ASP.NET MVC:RouteValueDictionaryに新しい項目をマージ/追加する方法
context.MapExtendedRoute("Home".MergeWithAreaName(context),
"www".MergeWithAppDomain(),
"123".MergeWithDefaultRouteKeys(),
new {Controller = "Home", Action = "Index"}.MergeWithDefaultRouteValues(),
new {}.MergeWithDefaultRouteConstraints());
最初の3つの方法で問題はありません。しかし、方法4と5は無効な値を返します。
public static object MergeWithDefaultRouteValues(this object defaultValues) {
return new RouteValueDictionary(defaultValues) {{"Culture", "SomeValue"}};
}
このような出力を返します(RouteDebuggerから):
Count = 3, Keys = System.Collections.Generic.Dictionary`2+KeyCollection[System.String,System.Object], Values = System.Collections.Generic.Dictionary`2+ValueCollection[System.String,System.Object]
あなたはキー/値のどれを見ることはできませんが正しい(例えばMergeWithDefaultRouteValues)の最初の署名は、このようなものです!誰かが私にそれを理解する方法を教えてもらえますか?
MapExtendedRouteの署名:事前に
MapExtendedRoute(this AreaRegistrationContext context, string name, string domain, string url, object defaults, object constraints)
感謝;)