创建routeValues(匿名类型)编程的ASP.NET MVC 3 [英] Create routeValues (anonymous type) programmatically in ASP.NET MVC 3
问题描述
假设我们有一个页面,其中包括一些元素,以支持从数据库搜索,所以在行动后我们需要找到哪些元素是活动的,按照该路线创建值是这样的:
列表<参数> SearchParameters = GetFilterParameters(集合);
如果(SearchParameters.Count大于0)
的foreach(在SearchParameters参数项){ 开关(item.Name){
案类别:
与categoryValue = item.Value;
打破; 案开始日期:
StartDateValue = item.Value;
打破;
案产品:
ProductValue = item.Value;
打破; }
返回RedirectToAction(指数,新的{类=的categoryValue,开始日期= StartDateValue,产品= ProductValue});
那么,有没有办法来定义 routeValues
动态有点像伪如下code:
VAR dynamicRoutValues;
的foreach(在SearchParameters参数项){ dynamicRoutValues.Add(item.Name,item.Value)} 返回RedirectToAction(指数,dynamicRoutValues);
您可以使用<一个href=\"http://msdn.microsoft.com/en-us/library/system.web.routing.routevaluedictionary.aspx\"><$c$c>RouteValueDictionary$c$c>:
VAR dynamicRoutValues =新RouteValueDictionary();
的foreach(在SearchParameters参数项){
dynamicRoutValues [item.Name] = item.Value;
}返回RedirectToAction(指数,dynamicRoutValues);
如果 SearchParameters
实施的IDictionary&LT;字符串对象&gt;
,那么你可以直接将它传递给 RouteValueDictionary
构造器:
返回RedirectToAction(指数,新RouteValueDictionary(SearchParameters));
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:
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:
var dynamicRoutValues;
foreach(Parameter item in SearchParameters) {
dynamicRoutValues.Add(item.Name, item.Value)
}
return RedirectToAction("Index", dynamicRoutValues);
You can use a 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:
return RedirectToAction("Index", new RouteValueDictionary(SearchParameters));
这篇关于创建routeValues(匿名类型)编程的ASP.NET MVC 3的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!