如何在ASP.MVC中配置路由以在URL中有更多操作?

时间:2014-08-19 15:41:24

标签: c# asp.net-mvc url routes

在我正在开发的ASP.MVC中,我需要在网址中有多个操作。

这是一个例子

BaseUrl/Release/1/Milestone/5/Feature/4

如何配置路由和动作方法来实现这一目标?

在这种情况下,我预计ReleaseController中的动作Milestone是一个被调用的动作,有三个输入id:

public class ReleaseController : Controller
{
    public ActionResult Milestone(int releaseID, int actionID, int secondaryID)
    {
        ...
    }
}
编辑:谢谢@Mati Cicero指出我正确的方向。我按照他的解决方案制作了更多的动词"动态"。 这是我的最终代码,也许对其他人也有用:

routes.MapRoute(
                name: "ReleaseSection",
                url: "Release/{releaseId}/{action}/{actionID}/{subAction}/{thirdID}",
                defaults: new
                {
                    controller = "Release",
                    action = "Index",
                    releaseId = UrlParameter.Optional,
                    actionID = UrlParameter.Optional,
                    subAction = UrlParameter.Optional,
                    thirdID = UrlParameter.Optional
                }
            );


public ActionResult Milestone(int? releaseId, int? actionID, string subAction, int? thirdID)
{
    ...
}

1 个答案:

答案 0 :(得分:1)

我没有对此进行测试,但您是否尝试过以下路线?

网址BaseUrl/Release/{releaseID}/Milestone/{actionID}/Feature/{secondaryID}

默认new { controller = "Release", action = "Milestone" }

约束new { releaseID = "\\d+", actionID = "\\d+", secondaryID = "\\d+" }

MVC引擎应该将路径段映射到您的操作参数