【问题标题】:How to redirect custom aspx page to mvc action如何将自定义 aspx 页面重定向到 mvc 操作
【发布时间】:2016-10-03 08:05:03
【问题描述】:

我已将 aspx 项目升级到 mvc。现在我的一些老客户使用 .aspx 页面调用 url,他们在 mvc 项目中得到 404(未找到)。

所以现在我必须将 .aspx 重定向到 mvc 页面。

旧网址

www.domain.com/bookshop/pc-58573-53-{product_name}.aspx

新网址

www.domain.com/{product_name}

我想通过mvc的路由机制来做。就像一旦出现这种类型的 url 那么它应该调用我的自定义 mvc 操作,在字符串参数中我会得到 pc-58573-53-{product_name}.aspx

您能否建议一种使用最少代码的最佳方法。

【问题讨论】:

  • 感谢@sachin 的回答

标签: c# asp.net asp.net-mvc routing nopcommerce


【解决方案1】:

只需用路由'bookshop/{pageName}'定义一个动作

以下是使用 Route 属性的 2 个场景的示例:

如果您不想更改 URL:

[Route("bookshop/{pageName}")]
public ActionResult MyAction(string pageName)
{
   // add logic according to what you receive in pageName property
   return View();
}

或者,如果您想重定向到新的 URL:

[Route("bookshop/{pageName}")]
public ActionResult MyAction(string pageName)
{
   // Create and use a method to ExtractProductNameFromPageName
   string productName = ExtractProductNameFromPageName(pageName);
   return Response.Redirect("~/" + productName);
}

这里的参数'pageName' 应该捕捉到'bookshop/' 之后的页面名称。

如果您没有启用路由属性映射,请在RouteConfig.cs 文件的RegisterRoutes 方法中添加以下代码:

// enable mapping of routes defined using Route attribute on specific actions.
routes.MapMvcAttributeRoutes();

【讨论】:

  • 我尝试了这个,但没有收到实际行动。我必须在任何地方定义路线?
  • @sachin,这在这种情况下不起作用,因为这里 OP 需要 301 多页重定向 并且据我所知,属性路由无法自行完成!
  • @Div 感谢您指出这一点,我也更新了处理这种情况的答案。
猜你喜欢
  • 1970-01-01
  • 2012-10-10
  • 1970-01-01
  • 1970-01-01
  • 2021-02-21
  • 1970-01-01
  • 2014-10-29
  • 2010-11-08
  • 1970-01-01
相关资源
最近更新 更多