将控制器和操作方法重定向到它的 URL

Redirecting a controller and action method to its URL

我有一个项目是在 ASP.NET MVC 5 中完成的。

他们使用了框架标准的默认 URL 结构。例如,AGM 页面的构造如下:

如果没有任何路由设置,要访问此页面,您需要转到以下 URL:

www.example.com/Home/AGM

这是他们发给媒体的URL。这个 URL 看起来很糟糕,我想实现一个更简洁的 URL 结构,它看起来像这样:

www.example.com/agm

我在RouteConfig.cs文件中是这样设置的:

routes.MapRoute(
    name: "AGM",
    url: "agm",
    defaults: new { controller = "Home", action = "AGM" }
);

我想要实现的是,如果用户输入 www.example.com/Home/AGM,那么它需要像 www.example.com/agm 一样显示 URL。相反,它显示为 www.example.com/Home/AGM.

我不确定如何实现它?

配置路由并在url

中定义action
routes.MapRoute(
    name: "AGM",
    url: "{action}",
    defaults: new { controller = "Home", action = "AGM" }
);

然后在AGM方法中重定向到www.example.com/agm

if (Request.Path.ToLower() == "/home/agm")
{
    return Redirect("/agm");
}

您只需在 Action 方法顶部添加 [Route("AGM")][Route("Home/AGM")]

[Route("AGM")]
[Route("Home/AGM")]
public IActionResult AGM()
{
    return View();
}