私は現在、小さなASP.NET MVCプロジェクトに取り組んでいます。このプロジェクトは数ヶ月前にリリースされました。しかし、ユーザビリティとSEOの理由から、変更を実装する必要があります。私はクリーンURLを作成するために属性ルーティングを使用することに決めました。製品ページがで呼び出された瞬間に複数のルートが1つの方法に割り当てられ、どのルートが呼び出されたかを判断する方法は?
:
hostname.tld /コントローラ/ GetArticle/1234
は、私はこのような新しいルートを定義しました。
[Route("Shop/Article/{id:int}/{title?}", Name = "GetArticle", Order = 0)]
public ActionResult GetArticle(int id, string title = null) {
// Logic
}
すべて正常に動作しますが、下位互換性とSEOの理由から、古いルートはまだ利用可能でなければなりません。 HTTPステータスコード301で新しいURLにリダイレクトされました。
私はこのように、1つのアクションに複数のルートを割り当てることが可能であることを聞いた:
[Route("Shop/Article/{id:int}/{title?}", Name = "GetArticle", Order = 0)]
[Route("Controller/GetArticle/{id:int}", Name = "GetArticle_Old", Order = 1)]
public ActionResult GetArticle(int id, string title = null) {
// Logic
}
しかし、これは良い解決策、またはどのように呼び出されたルートを決定するためであれば、私は考えていますか?
使用しているMVCのバージョンはどれですか? 'this.ControllerContext.RouteData'を介してルート情報を取得できます。 –
ASP.NET MVC 4.5.2、MVC 5と思うので、私が知る限り、複数のルートタグは以前のバージョンではサポートされていません。そして、私はこれをチェックしていただきありがとうございます! –
コアMVCを使用していた場合、依存関係インジェクションを使用して、「ControllerContext」と同等のものを取得する必要があるからです。 –