2016-10-03 144 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