将控制器和操作方法重定向到其 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的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 ajax jQuery 重定向指定重定向 url

使用 web.config 中的 httpRedirect 将 asp.net MVC URL 重定向到特定的控制器/操作/参数

如何在类库中使用重定向(url)方法?

由于会话过期,将用户重定向到最后一页

Google App Engine (java) 支持哪个支付网关,无需重定向到其本机网站

Django 注册 url 重定向