- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要生成此网址:http://localhost:3178/Reports/?GroupId=1211&GroupId=1237
我正在尝试:
var routeData = new RouteValueDictionary();
routeData.Add("GroupId", "1, 2");
获取:GroupId=1,%202
或
routeData.Add("GroupId", "1");
routeData.Add("GroupId", "2");
获取:已添加具有相同 key 的项目
甚至
routeData.Add("GroupId[0]", "1");
routeData.Add("GroupId[1]", "2");
获取:?GroupId%5B0%5D=1&GroupId%5B1%5D=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();
}
此函数将构建路线的完整路径,并将附加参数对象中的值作为查询字符串数据附加。这可以通过执行 ToString 方法来处理数组、枚举、可为空值和其他类型。
希望这有帮助!
关于asp.net-mvc-3 - 如何将 int 数组传递给 RouteValueDictionary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6396136/
作为 this question 的后续,我正在尝试实现自定义路由约束,以便为特定路由动态修改 RouteValueDictionary。 我已经完成了 95%:我可以根据提供的参数模式匹配任何路由,
我有一个 MVC3 RouteValueDictionary,我想将其快速转换为匿名类型。 例如: new RouteValueDictionary(){{"action","search"}} 将与
我想知道是否有一种方法可以在给定虚拟路径的情况下返回与路径匹配的路由的参数名称和值的集合。我需要它来获取目标页面上 URL 的参数,而无需对正则表达式进行硬编码。 这是我猜 RouteTable.Ro
我知道我可以通过执行以下操作将 html 属性添加到我的标签中: var htmlAttributes = new RouteValueDictionary { { "data-foo", "bar"
我想查看 System.Web.Routing.RouteValueDictionary 类的源代码。但 Reflector 无法正确反汇编。 谢谢! 最佳答案 使用新的 .NET Reference
我正在创建一个可重用的方法来检查我的模型并自动构建 URL(通过 ActionLink)进行分页。我的模型的属性之一是 string[] (对于多选选择列表)这是完全有效的。 URL 的一个例子是:h
我想返回一个 RedirectToRouteResult将用户发送到如下所示的 URL: /MyController/MyAction/id?newid=3&newid=5&newid=7 newid
我想知道是否有一种优雅的方法可以将复杂类型的数组添加到 RouteValueDictionary 或兼容类型? 例如,如果我有一个类和一个 Action : public class TestObje
如果您有路线: routes.MapRoute("search", "{controller}/{action}/{filter1}/{filter2}/{filter3}", _ New Wit
我有一个 RouteValueDictionary 附加到传递给 View 的对象。该对象包含一个名为 SelectedItems 的其他对象数组,用于用用户可以选择的复选框填充网格。由于此对象随后会
我正在使用 RouteValueDictionary 将 RouteValues 传递给 ActionLink: 如果我编码: 链接结果正常: SearchArticles?refSearch=2&
在编写 htmlhelper 扩展时,如果我想为我的 htmlhelper 扩展方法支持类似结构的构造函数,我使用 RouteValueDictionary如下: public static stri
我正在为我的应用程序编写一个帮助程序,它为给定的强类型 Controller /操作写出一个菜单项,如下所示: (c => c.WhateverAction(), "Whatever") %> 作为此
我正在使用 ASP.Net MVC 2,但遇到了一个小问题。我需要从值列表中生成一个 url。 使用以下代码: RouteValueDictionary dic = new RouteValueDic
这两段代码是一样的吗? RouteValueDictionary dic=new RouteValueDictionary(); dic.Add("controller", "Home"); dic.
每当我使用 t4Mvc 创建表单发布网址时,例如 它会生成如下所示的路由: 或者当我使用 该方法需要一个它生成的 Action 参数 其他人有这个问题吗? 最佳答案 我明白了,这是因为 T4M
在实现 WebApplication 时,我们在 RouteValueDictionary 中遇到了一个带有键“RouteModels”的可疑条目。 即使是 Google 也没有给我该条目的结果。有人
我需要从任意请求路径(与当前请求不相关)提取路由数据(Controller、Action等),例如/ 或 /account/manage。在以前版本的 Asp.Net Mvc 中,这可以像这样完成:
跨搜索结果页面保留表单帖子( View 模型)结果的最佳方法是什么? 我有一个包含复选框的搜索表单。此表单是使用 View 模型构建的,例如 public class SearchViewModel
我需要生成此网址:http://localhost:3178/Reports/?GroupId=1211&GroupId=1237 我正在尝试: var routeData = new RouteVa
我是一名优秀的程序员,十分优秀!