[英]Create routeValues (anonymous type) programmatically in ASP.NET MVC 3
Assume we have a page that include some elements to support search from DB, so in Post Action we need to find which elements are active and according to that create route values something like this: 假设我们有一个页面,其中包含一些支持从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 });
So is there any way to define routeValues
dynamically something like the followings Pseudo-Code: 那么有没有办法动态定义
routeValues
类似于以下Pseudo-Code:
var dynamicRoutValues;
foreach(Parameter item in SearchParameters) {
dynamicRoutValues.Add(item.Name, item.Value)
}
return RedirectToAction("Index", dynamicRoutValues);
You can use a RouteValueDictionary
: 您可以使用
RouteValueDictionary
:
var dynamicRoutValues = new RouteValueDictionary();
foreach(Parameter item in SearchParameters) {
dynamicRoutValues[item.Name] = item.Value;
}
return RedirectToAction("Index", dynamicRoutValues);
If SearchParameters
implemented IDictionary<string, object>
then you could pass it directly to the RouteValueDictionary
constructor: 如果
SearchParameters
实现了IDictionary<string, object>
那么您可以将它直接传递给RouteValueDictionary
构造函数:
return RedirectToAction("Index", new RouteValueDictionary(SearchParameters));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.