【问题标题】:Custom url for different ActionResults?不同 ActionResults 的自定义 url?
【发布时间】:2015-03-06 07:00:39
【问题描述】:

我正在将旧网站迁移到新的 ASP .Net MVC 网站。旧网站的网址命名方案非常糟糕。我很想忽略旧方法,只创建新的 url,但是,很多链接指向 SEO 的旧链接。因此,我必须维护旧网址。

假设这是旧网址: web.com/items/products/Hello-World-Hyphens

如何在 MVC 上输入?

我有 ProductsController:

ActionResult HelloWorldHyphens() { return View(); }

将输出到 web.com/products/HelloWorldHyphens

但是,我需要以旧方式编写它。以 /items/ 开头并在控制器名称中包含连字符。

有没有办法让我做这样的事情?

[OutputUrl="/items/products/Hello-World-Hyphens"]
ActionResult HelloWorldHyphens()

【问题讨论】:

  • 哪个版本的mvc? mvc 5 具有属性路由,可让您执行类似 [Route("/items/products/Hello-World-Hyphens")] 的操作
  • 仅供参考 - 您没有使用旧网址。出于 SEO 目的,您可以使用 301(永久)重定向到新位置。你可以通过 web.config 中的IIS rewrite module 来实现,也可以在 MVC 中指定 301 重定向。

标签: c# asp.net asp.net-mvc iis


【解决方案1】:

当您迁移到新的 ASP MVC 网站时,您可以利用 MVC 5 中的属性路由。

如果在注册路由时添加属性路由:

routes.MapMvcAttributeRoutes();

然后你可以在方法上添加路由:

[Route("/items/products/Hello-World-Hyphens")]
ActionResult HelloWorldHyphens()

【讨论】:

  • 我决定使用这个解决方案。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-04
  • 2013-11-16
  • 2022-07-13
  • 2015-06-09
  • 1970-01-01
相关资源
最近更新 更多