ASP.NET MVC 2参数数组

Son*_*nia 8 routing asp.net-mvc-2

我需要有以下路由逻辑:

http://mydomain.com/myAction/ {root}/{child1}/{child2}/...

我不知道路线的深度是什么,所以我希望动作的签名看起来像这样:

public ActionResult myAction(string[] hierarchy)
{
  ...
} 
Run Code Online (Sandbox Code Playgroud)

不知道如何写这条路线.救命?

非常感谢.

Jer*_*oen 15

添加以下映射时:

routes.MapRoute("hierarchy", "{action}/{*url}"
    new { controller = "Home", action = "Index" });
Run Code Online (Sandbox Code Playgroud)

你可以在你的动作方法中获得字符串'url':

public ActionResult myAction(string url)
{
    ...
}
Run Code Online (Sandbox Code Playgroud)

然后很容易获得层次结构:

string[] hierarchy = url.Split('/');
Run Code Online (Sandbox Code Playgroud)

可以使用similair方法从字符串值列表中创建URL:

string firstPart = hierarchy.Count() > 0: hierarchy[0] : string.Empty;
StringBuilder urlBuilder = new StringBuilder(firstPart);
for (int index = 1; index < hierarchy.Count(); index++)
{
    urlBuilder.Append("/");
    urlBuilder.Append(hierarchy[index]);
}
Run Code Online (Sandbox Code Playgroud)

然后可以在动作链接中使用urlBuilder,例如:

<%= Html.ActionLink("Text", new { Controller="Home", Action="Index", Url=urlBuilder.ToString() }) %>
Run Code Online (Sandbox Code Playgroud)