9

DBからの検索をサポートするいくつかの要素を含むページがあると仮定します。したがって、アクション後では、アクティブな要素を見つけ、それに応じて次のようなルート値を作成する必要があります。

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);
4

1 に答える 1

18

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

var dynamicRoutValues = new RouteValueDictionary();
foreach(Parameter item in SearchParameters) {
    dynamicRoutValues[item.Name] = item.Value;
}

return RedirectToAction("Index", dynamicRoutValues);

SearchParameters実装されている場合は、コンストラクターIDictionary<string, object>に直接渡すことができます。RouteValueDictionary

return RedirectToAction("Index", new RouteValueDictionary(SearchParameters));
于 2012-04-21T12:25:19.080 に答える