MVC Route在URL中隐藏控制器

时间:2014-04-26 14:36:13

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

我想创建一个路径,其中控制器名称不会显示在URL中。

我从这条路线开始:

routes.MapRoute(
    name: "ViewTag",
    url: "tag/tagged/{tag}",
    defaults: new { controller = "Tag", action = "Tagged" }
);

和控制器方法:

public class TagController : Controller
{
    public ActionResult Tagged(string tag)
    {

哪个有效但生成网址:tag/tagged/money

我想使用网址:tagged/money

我更改了删除控制器名称的路由:

routes.MapRoute(
    name: "ViewTag",
    url: "tagged/{tag}",
    defaults: new { controller = "Tag", action = "Tagged" }
);

当我手动输入URL时,哪个路由正确; tagged/money但是,它不会生成正确的路由。

@Html.ActionLink(tag.Text, "tagged", new { @tag = tag.Text })

@Html.ActionLink(tag.Text, "tagged", "tag", new { @tag = tag.Text }, null)

两者都会生成原始网址和错误网址:tag/tagged/{tag}

我认为路由配置用于解析传入的URL并生成URL?

1 个答案:

答案 0 :(得分:2)

从路由网址中删除tagged后,您可以使用Html.RouteLink方法:

@Html.RouteLink(tag.Text, "ViewTag", new { @tag = tag.Text })