将控制器和操作方法重定向到其 URL
Posted
技术标签:
【中文标题】将控制器和操作方法重定向到其 URL【英文标题】:Redirecting a controller and action method to its URL 【发布时间】:2021-11-21 04:55:12 【问题描述】:我正在处理一个在ASP.NET MVC 5
完成的项目。
他们使用了框架标准的默认 URL 结构。例如,AGM 页面是这样构建的:
控制器:主页 行动方式: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
。
我不知道如何实现这个?
【问题讨论】:
【参考方案1】:配置路由并在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");
【讨论】:
这对我有用,但你只是忘了return View();
的else部分
当然,我只是写了一部分代码【参考方案2】:
您只需在 Action 方法的顶部添加 [Route("AGM")]
和 [Route("Home/AGM")]
:
[Route("AGM")]
[Route("Home/AGM")]
public IActionResult AGM()
return View();
【讨论】:
这不起作用,当我输入www.example.com/Home/AGM
然后它转到www.example.com/Home/AGM
而不是www.example.com/agm
。以上是关于将控制器和操作方法重定向到其 URL的主要内容,如果未能解决你的问题,请参考以下文章
使用 web.config 中的 httpRedirect 将 asp.net MVC URL 重定向到特定的控制器/操作/参数