如何通过正则表达式从自定义路由构造函数中的url参数中获取路由数据键
本文关键字:路由 参数 url 获取 数据 构造函数 何通过 正则表达式 自定义 | 更新日期: 2023-09-27 18:16:54
基本上,我需要从路由字符串中获得路由值键的数组。正则表达式看起来像这样,但我似乎不能得到正则表达式下来。
源自"{controller}/{action}/{id}"
到一个有值的string[]
, "controller", "action", "id"
这是我最接近的Regex.Split(url, "/{(.*?)}/");
但是我得到了不寻常的结果:"{controller}", "action", "{id}"
避免使用Regex可能要便宜得多。试一试:
var myRoute = "{controller}/{action}/{id}";
string[] results = myRoute.Split(new[] { '{', '}', '/' }, StringSplitOptions.RemoveEmptyEntries);
实际上,您可以调用someContext.RouteData.Values.Keys.ToArray()
,其中someecontext可以是RequestContext
,例如。确保您导入了System。Linq命名空间获取ToArray()
扩展方法
如果你想通过一个动作来实现,你需要通过ControllerContext来实现。例如,
public ActionResult Index()
{
var routeDataKeys = ControllerContext.RouteData.Values.Keys.ToArray();
var content = String.Empty;
foreach (var key in routeDataKeys)
{
content += " " + key;
}
return Content(content);
}
你会得到所有属于当前所选路由的键值,而不带花括号。
不需要regex:
List<string> parts = str.Split('/').Select(p => p.Trim(new []{ '}', '{' })).ToList();