【问题标题】:Create routeValues (anonymous type) programmatically in ASP.NET MVC 3在 ASP.NET MVC 3 中以编程方式创建 routeValues(匿名类型)
【发布时间】:2012-04-21 12:20:20
【问题描述】:

假设我们有一个页面,其中包含一些支持从 DB 搜索的元素,因此在 Post Action 中,我们需要找到哪些元素是活动的,并据此创建如下所示的路由值:

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

【问题讨论】:

    标签: c# asp.net-mvc asp.net-mvc-3 dynamic anonymous-types


    【解决方案1】:

    您可以使用RouteValueDictionary

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

    如果SearchParameters 实现了IDictionary&lt;string, object&gt;,那么您可以将其直接传递给RouteValueDictionary 构造函数:

    return RedirectToAction("Index", new RouteValueDictionary(SearchParameters));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-04
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多