2016-10-03 7 views
1

mvcにaspxプロジェクトをアップグレードしました。今私の古い顧客のいくつかは.aspxページでurlを呼び出し、彼らはmvcプロジェクトで404(見つかりません)を取得しています。カスタムaspxページをmvcアクションにリダイレクトする方法

これで、.aspxをmvcページにリダイレクトする必要があります。

旧URL

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

新しいURL

www.domain.com/{product_name} 

私は、MVCのルーティング機構を介して行うことを考えています。一度このタイプのURLが来たら、カスタムのmvcアクションを呼び出す必要があります。文字列パラメータでは、私はpc-58573-53- {product_name} .aspxを取得します。

最小限に抑えるコード。

+0

答え – bhargav

答えて

1

だけでルート属性を使用して2つのシナリオの例であり、ここでルート'bookshop/{pageName}'

とアクションを定義します。場合

、あなたは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(); 
+0

ため@sachinおかげで私はこれを試していないが、アクションにはなって呼び出しています。私はどこにルートを定義する必要がありますか? – bhargav

+0

@sachinここでOPは* 301の複数のページをリダイレクトする必要がありますので、この場合は動作しません。*属性のルーティングは、私が知っている通りに自分で行うことはできません! –

+0

@Divそれを指摘してくれてありがとう、私はあまりにもそのシナリオを処理するための答えを更新しました。 – sachin

関連する問題