2012-04-21 22 views
8

DBからの検索をサポートするいくつかの要素を含むページがあるので、ポストアクションでどの要素がアクティブであるかを調べる必要があり、ASP.NET MVC 3でrouteValues(匿名型)をプログラムで作成する

List<Parameter> SearchParameters = GetFilterParameters(collection); 


if(SearchParameters.Count > 0) 
foreach(Parameter item in SearchParameters) { 

    switch(item.Name) { 
        case "Category": 
        CategoryValue= item.Value; 
         break; 

        case "StartDate": 
        StartDateValue= item.Value; 
         break; 


        case "Product": 
        ProductValue= item.Value; 
         break; 

       } 
return RedirectToAction("Index", new {category = CategoryValue, startdate=StartDateValue, product=ProductValue }); 

だから、動的に以下の擬似コードのようなものをrouteValuesを定義するためにどのような方法があります:

var dynamicRoutValues; 
foreach(Parameter item in SearchParameters) { 

    dynamicRoutValues.Add(item.Name, item.Value) 

} 

    return RedirectToAction("Index", dynamicRoutValues); 

答えて

17

あなたはRouteValueDictionaryを使用することができます。

このような何か SearchParametersIDictionary<string, object>を実装
var dynamicRoutValues = new RouteValueDictionary(); 
foreach(Parameter item in SearchParameters) { 
    dynamicRoutValues[item.Name] = item.Value; 
} 

return RedirectToAction("Index", dynamicRoutValues); 

なら、あなたはRouteValueDictionaryコンストラクタに直接渡すことができます。

return RedirectToAction("Index", new RouteValueDictionary(SearchParameters)); 
関連する問題