【发布时间】: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