【问题标题】:How configure route in ASP.MVC to have more actions in the url?如何在 ASP.MVC 中配置路由以在 url 中有更多操作?
【发布时间】:2014-10-12 19:13:18
【问题描述】:

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

这是一个例子

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)
{
    ...
}

【问题讨论】:

  • 听起来你真的只想要一个带有多个参数的动作。 stackoverflow.com/questions/2246481/…
  • 你能更精确一点吗?您对上面的 URL 有什么期望?是否应该使用参数 1 调用 Release 操作,然后使用参数 5 调用 Mildestone 操作,最后使用参数 4 调用 Feature 操作?
  • 是的,但我不喜欢使用像 BaseUrl/Release/1/5/4 这样没有表达力的 url 的想法
  • 在问题中添加了有关预期行为的附加信息。
  • 使用传统查询字符串BaseUrl/Milestone?releaseID=1&actionID=5&secondaryID=4

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


【解决方案1】:

我没有测试这个,但是你尝试了以下路线吗?

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

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

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

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

【讨论】:

    猜你喜欢
    • 2013-07-16
    • 1970-01-01
    • 2011-01-25
    • 2015-04-10
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 1970-01-01
    相关资源
    最近更新 更多