2017-08-16 17 views
0
に渡さ

ASP.NETコアのUrlHelperExtensionsは、その有用ではありませんので、私は、ルート値を追加/削除/マージすることはできません。コア前UrlHelperの等価は、それが簡単にRouteValueDictionaryを取っ過負荷を、持っていました。編集匿名オブジェクトIUrlHelper

だから私は、ルーティングを実行するメソッドを持っています。それは私がそれに追加して、IUrlHelper.Action(...)に渡したい、object routeValuesを受けます。

私はobjectからRouteValueDictionaryに変換できますが、匿名に戻ることはできませんobject。多分別の方法がありますか?

public string GenerateOrderRoute(object routeValues = null) 
{ 
    var newRouteValues = //...I want to add/remove/merge to routeValues 
    // e.g. I want to add an area 
    return _urlHelper.Action("details", "orders", newRouteValues); 
} 

答えて

0

私は方法を見つけましたが、私は好きではないダイナミックを使用します。この方法で問題が見つかった場合は、教えてください。より良い/異なる方法がある場合は、私に知らせてください。

public string GenerateOrderRoute(object routeValues = null) 
{ 
    // here I merge given route values with some of my own 
    var dict = (routeValues != null) ? new RouteValueDictionary(routeValues) : new RouteValueDictionary(); 
    dict.Add("area", "commercial"); 
    dict.Add("foo", "bar"); 

    var expandoObject = new ExpandoObject(); 
    var expandoDictionary = (IDictionary<string, object>)expandoObject; 
    foreach (var keyValuePair in dict) 
    { 
    expandoDictionary.Add(keyValuePair); 
    } 

    return _urlHelper.Action("details", "orders", expandoDictionary); 
} 
関連する問題