2つの異なるURLを使用するように1つのコントローラをセットアップしようとしています。MVCルーティング - 複数のURLが単一のコントローラ/メソッドに一致する
- mysite.com/MyArea/some-route/SomeAction
- mysite.com/OtherArea/some-route/SomeAction
:
それでは、私が欲しいのに移動することです両方とも同じ場所に行くようにしてください。
だから私はこのように設定したクラスを持っている:
[RouteArea("MyArea", AreaPrefix = "MyArea")]
[RoutePrefix("some-route")]
[Route("{action}")]
public class MyController : Controller
{
[Route("SomeAction")]
[Route("~/OtherArea/some-route/SomeAction")]
[AcceptVerbs(HttpVerbs.Get)]
public ActionResult MyAction()
{
return View();
}
}
だから、これは動作します - 少し乱雑に見えるけれども。
URLをブラウザに入力すると、このアクション/ページが表示されます。
'OtherArea'は実際には存在しません。時には最初のURLを使用したい場合もあれば、時には2番目のURLを使用することもあります。
1)このアクションにルーティングしてURLを指定するにはどうすればよいですか?
RedirectToAction("MyAction", "MyController", new { area = "MyArea" });
私はコントローラ/アクションのみを指定しています - それはそれ自身で見つけたURLです。 強制的に使用することはできますか?
パスをハードコーディングするのが理想的です。
2)私がやろうとしていることをする良い方法がありますか?
私は、この行のファンではない:
[Route("~/OtherArea/some-route/SomeAction")]
しかし、私はまたちょうど2番目のURLを持っていることのために、コントローラや新エリアのコピーを作成する必要はありません。
おかげ
同じビューを共有することができなければなりません期待している。私はそれをどう思っていたんだよね> _ < –