创建routeValues​​(匿名类型)编程的ASP.NET MVC 3 [英] Create routeValues (anonymous type) programmatically in ASP.NET MVC 3

查看:257
本文介绍了创建routeValues​​(匿名类型)编程的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:

  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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆