如何将自定义aspx页面重定向到mvc操作

时间:2016-10-03 08:05:04

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

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

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

旧网址

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

新网址

www.domain.com/{product_name}

我正在考虑通过mvc的路由机制来做。就像一旦这种类型的网址来了,那么应该调用我的自定义mvc动作,在字符串参数中我将获得pc-58573-53- {product_name} .aspx

请你用最少的代码建议一个最好的方法。

1 个答案:

答案 0 :(得分:1)

只需使用路线'bookshop/{pageName}'

定义操作即可

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

如果您不希望更改网址:

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

或者,如果您想重定向到新网址:

[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/'的网页名称。

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

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