我有一个名为Quote的控制器,其索引方法需要requestId参数。 URL显示为
/Quote/{requestId}.
此外,我有一个名为ApplicantInfo的方法,它特定于报价和路线
/Quote/{requestId}/ApplicantInfo.
但是当我像这样使用Url.Action助手时
@Url.Action("Index","Quote",new { requestId = {requestId}})
它给了我一个
的网址/Quote/ApplicantInfo?requestId={requestId}
无法正确路由。
显然,我可以手动创建URL字符串,但在我放弃之前我想知道我是否遗漏了某些东西,例如覆盖Url.Action
方法将输出正确的{{1 }}
TIA
路线
Url
答案 0 :(得分:1)
我能够像这样做类似的事情
在Global.asax.cs
中定义路线,或者覆盖路线
routes.MapRoute(
"Organization_default",
"{controller}/{requestId}/{action}",
new {
controller = "home",
action = "index",
requestId = "default",
id = UrlParameter.Optional
}, null);
public ActionResult Question(string requestId)
{
ViewData["value"] = requestId;
return View();
}
@{
ViewBag.Title = "Index";
var value = ViewData["value"];
}
<h2>Stackoverflow @value</h2>
@Html.ActionLink("Click Here",
"question", "StackOverflow", new { requestId ="Link" }, new{ @id="link"})
链接如何与此路线一起显示的屏幕截图,我定义了
您不能在自定义此路线之前定义了另一条路由{controller}/{action}/{key}
。如果您执行其他路线覆盖您的自定义路线。
如果您需要两个路线共存,则必须定义单独的区域并定义覆盖RegisterArea
的自定义路线
public override void RegisterArea(AreaRegistrationContext context)
{
//..custom route definition
}