asp.net-mvc-3 – 如何将int数组传递给RouteValueDictionary
发布时间:2020-05-24 12:12:15 所属栏目: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(Grou
|
我需要生成这个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-mvc-4 – 什么是antlr3,为什么默认情况下在VS2012
- asp.net-mvc-3 – ASP.NET MVC 3 WebGrid – 条件列格式
- asp.net-mvc-3 – MVC 3 – 比较属性 – 在客户端执行不区分
- 如何在ASP.NET修复的oracle填充攻击?
- asp.net – 如何关闭.NET站点进行维护?
- asp.net-mvc – 使用ASP.NET MVC响应REQUEST_METHOD = HEAD
- asp.net – 如何在一个新的选项卡中打开asp:HyperLink.Nav
- ASP.NET /数据库性能清单
- asp.net – 如何处理在IIS上运行的网站的计划任务?
- asp.net-mvc-4 – 在VS2012中运行代码分析时出错
推荐文章
站长推荐
热点阅读
