为不同的 ActionResults 自定义 url?

Custom url for different ActionResults?

我正在将旧网站移动到新的 ASP .Net MVC 网站。旧站点的 url 命名方案非常糟糕。我很想忽略旧方法,只创建新的 urls,但是,很多链接指向 SEO 的旧链接。所以,我要维持老url。

假设这是旧的 url: 网页.com/items/products/Hello-World-Hyphens

如何在 MVC 上输入它?

我得到了 ProductsController:

ActionResult HelloWorldHyphens() { return View(); }

这将输出到网络。com/products/HelloWorldHyphens

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

有什么方法可以做这样的事情吗?

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

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

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

routes.MapMvcAttributeRoutes();

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

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