asp.net-mvc-3 – 如何将int数组传递给RouteValueDictionary
发布时间:2020-12-16 04:23:33 所属栏目:asp.Net 来源:网络整理
导读:我需要生成这个URL:http:// localhost:3178 / Reports /?GroupId = 1211 GroupId = 1237 我尝试着: var routeData = new RouteValueDictionary();routeData.Add("GroupId","1,2"); 得到:GroupId = 1,2 要么 routeData.Add("GroupId","1");routeData.Ad
我需要生成这个URL:http:// localhost:3178 / Reports /?GroupId = 1211& GroupId = 1237
我尝试着: var routeData = new RouteValueDictionary(); routeData.Add("GroupId","1,2"); 得到:GroupId = 1,2 要么 routeData.Add("GroupId","1"); routeData.Add("GroupId","2"); 获取:已添加具有相同键的项目 乃至 routeData.Add("GroupId[0]","1"); routeData.Add("GroupId[1]","2"); 得到:?GroupId [0] = 1& GroupId [1] = 2 有可能以某种方式修复我的问题? 解决方法
RouteValueDictionary旨在为路由提供信息.因此,我认为它没有你所要求的能力.我一直在使用自定义帮助器根据我传入的内容填充查询字符串数据:
public static string BuildPath(RequestContext context,string routeName,RouteValueDictionary routeValues,object additionalParams) { var vpd = RouteTable.Routes[routeName].GetVirtualPath(context,routeValues); if (vpd == null) return string.Empty; var virtualpath = vpd.VirtualPath; var addparams = BuildAdditionalParams(additionalParams); if (!virtualpath.Contains("?") && addparams.Length > 0) virtualpath = virtualpath + "?" + addparams; else if (virtualpath.Contains("?") && addparams.Length > 0) virtualpath = virtualpath + "&" + addparams; return "/" + virtualpath; } protected static string BuildAdditionalParams(object additionalParams) { if (additionalParams == null) return string.Empty; StringBuilder sb = new StringBuilder(); Type type = additionalParams.GetType(); PropertyInfo[] props = type.GetProperties(); Action<string,string> addProperty = (name,value) => { if (sb.Length > 0) sb.Append("&"); sb.Append(name); sb.Append("="); sb.Append(value); }; foreach (PropertyInfo prop in props) { var simplevalue = prop.GetValue(additionalParams,null); if (simplevalue != null) { Type propertyType = prop.PropertyType; if (Nullable.GetUnderlyingType(propertyType) != null) { propertyType = Nullable.GetUnderlyingType(propertyType); } if (propertyType.IsEnum) { addProperty(prop.Name,((int)simplevalue).ToString()); } else if (propertyType.IsArray && propertyType != typeof(string)) { foreach (var val in prop.GetValue(additionalParams,null) as IEnumerable) addProperty(prop.Name,val.ToString()); } else { if (!string.IsNullOrEmpty(simplevalue.ToString())) addProperty(prop.Name,simplevalue.ToString()); } } } return sb.ToString(); } 此函数将构建路径的完整路径,并将additionalParams对象中的值作为查询字符串数据附加.这可以通过执行其ToString方法来处理数组,枚举,可空值和其他类型. 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Asp.Net Core 生成二维码(NuGet使用QRCoder)
- asp.net-mvc – 如何从VOID方法重定向到MVC3中的另一个动作
- asp.net-mvc – ASP.NET MVC&Windsor.Castle:使用与Ht
- asp.net – Gridview行编辑 – 动态绑定到DropDownList
- asp.net-mvc-4 – 使用Bootstrap日期时间选择器,Asp.Net MV
- asp.net-mvc-3 – 使用MVCMailer将图像嵌入电子邮件中
- asp.net-mvc – ASP.NET MVC – 模型可以有业务逻辑吗?
- ValidateInput属性似乎无法在ASP.NET MVC中工作
- asp.net-mvc – MVC – 视图中的多个模型
- asp.net-mvc-4 – .Net MVC4显示错误的视图(.mobile问题)
推荐文章
站长推荐
热点阅读