2012-04-21 8 views
8

Giả sử chúng ta có một trang bao gồm một số thành phần để hỗ trợ tìm kiếm từ DB, vì vậy trong Post Action chúng ta cần tìm phần tử nào đang hoạt động và theo đó tạo giá trị tuyến đường một cái gì đó như thế này:Tạo routeValues ​​(kiểu ẩn danh) lập trình trong ASP.NET MVC 3

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

Vậy có cách nào để xác định routeValues động giống như sau Pseudo-Code:

var dynamicRoutValues; 
foreach(Parameter item in SearchParameters) { 

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

} 

    return RedirectToAction("Index", dynamicRoutValues); 

Trả lời

17

Bạn có thể sử dụng một RouteValueDictionary:

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

return RedirectToAction("Index", dynamicRoutValues); 

Nếu SearchParameters thực hiện IDictionary<string, object> sau đó bạn có thể vượt qua nó trực tiếp đến các nhà xây dựng RouteValueDictionary:

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