2016-10-03 141 views
1

我已将aspx项目升级到mvc。现在我的一些老客户用.aspx页面调用url,他们在mvc项目中获得404(未找到)。如何将自定义aspx页面重定向到mvc动作

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

旧网址

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

新URL

www.domain.com/{product_name} 

我想通过MVC的路由机制做。就像一旦这种类型的网址来了,那么它应该叫我的自定义mvc行动,并在字符串参数我会得到pc-58573-53- {product_name} .aspx

你能建议一个最佳的方式来做到这一点与最小码。

+0

感谢@sachin的答案 – bhargav

回答

1

只是路线定义操作'bookshop/{pageName}'

以下是使用路由属性2种方案的示例:

在情况下,你不想要的网址更改:

[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/'

在情况下,你没有启用路由属性映射,RegisterRoutes方法RouteConfig.cs文件添加以下代码:

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

我也试试这个,但在行动没有得到调用。我必须在任何地方定义路线? – bhargav

+0

@sachin,在这种情况下,这不起作用,因为这里OP需要* 301多个页面重定向*和属性路由不能完成那件事情,因为我知道! –

+0

@Div谢谢你指出,我已经更新了答案来处理这种情况。 – sachin