在 asp .NET 中更改 url(重定向)

Posted

技术标签:

【中文标题】在 asp .NET 中更改 url(重定向)【英文标题】:Change url (redirection) in asp .NET 【发布时间】:2016-07-25 16:34:01 【问题描述】:

我正在开发一个 C# mvc 应用程序。在我的站点中,我有这个 url abc.com/About/WhoWeAre,其中“About”是控制器,“WhoWeAre”是操作名称。但我希望这个 url 以abc.com/About/who-we-are 的形式返回。问题是我无法命名其中包含“-”的操作。我尝试使用HttpContext Response 使用Url Redirection,但找不到解决方案。

如果我在 Route Config 中处理“About/who-we-are”的请求并将其路由到“About/WhoWeAre”,则它正在使用地址栏中所需的 url。但是,当我请求“About/WhoWeAre”时,它会在地址栏中返回具有相同(“About/WhoWeAre”)网址的页面,该网址重复了该网址。如何重定向?

如有任何问题,请随时提出。

【问题讨论】:

iis.net/downloads/microsoft/url-rewrite 【参考方案1】:

使用 ActionName 属性映射 Url。下面是例子

 public class AboutController : Controller
 

    [ActionName("Who-we-are")]
    public ActionResult WhoWeAre()
    
        return View();
    
 

【讨论】:

它适用于这个网址:abc.com/About/who-we-are 但不适用于 abc.com/About/WhoWeAre ActionName 属性只允许为一种方法传递一个名称。如果你想为同一个动作映射多个 url,那么我们可以定义多个匹配的路由。这是映射到您的问题的示例modernpathshala.com/Forum/Thread/Interview/8482/… 感谢您的帮助@ashish 我已经实现了链接中显示的方法。但我的要求不同,我希望用户浏览器上显示的 URL 应该是 abc.com/About/who-we-are 不管他输入什么 url【参考方案2】:

您可以使用 ActionName 属性使用 C# 方法名称中不允许的字符重命名您的操作。

【讨论】:

感谢@ScoobyDrew18

以上是关于在 asp .NET 中更改 url(重定向)的主要内容,如果未能解决你的问题,请参考以下文章

ASP.NET Web API更改请求URI(重定向到另一个方法)

重定向到 ASP.net 核心中的 url

重定向到另一台服务器而不更改我当前的 Url

如何通过更改 ASP.NET MVC 中的 Url 来阻止对控制器的访问?

ASP.NET Core 3.1 图像 URL 错误代码 302 重定向

如何在 ASP.NET MVC 中重定向到动态登录 URL