ASP.NET MVC URL路由,中间带参数

时间:2012-12-19 21:53:25

标签: asp.net-mvc-4 asp.net-mvc-routing

我有一个名为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

1 个答案:

答案 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"})

截图

链接如何与此路线一起显示的屏幕截图,我定义了 enter image description here

捕捉

不能在自定义此路线之前定义了另一条路由{controller}/{action}/{key}。如果您执行其他路线覆盖您的自定义路线。

如果您需要两个路线共存,则必须定义单独的区域并定义覆盖RegisterArea的自定义路线

public override void RegisterArea(AreaRegistrationContext context)
{
   //..custom route definition
}