0

私はカスタムURLルートを使用します。そうするMVCカスタムアクションのルート - 404エラー

http://localhost/MyController/MyView/11/25?someID=0 

を、私は次のアクションがあります。

[Route("{page}/{size}")] 
public ActionResult MyView(int page = 0, int size = 25, FilterModel filterModel = null) 
{ 
    ... 
} 

を私は404エラーを取得します。どうしましたか ?たとえば、そのURLは次のように動作します。

http://localhost/MyController/MyView?someID=0 

答えて

0

これは属性ルーティングです。最後の答えのお詫び

routes.MapRoute( 名:「MYVIEW」、 URL:「{ページ}/{サイズ}」、 デフォルト:新しい{=「MyController」コントローラ、アクション=「MYVIEW」}、 制約:新しいです{page = ""、size = ""} );

https://blogs.msdn.microsoft.com/webdev/2013/10/17/attribute-routing-in-asp-net-mvc-5/

+0

私はまだ404エラーを受け取ります – Tony

+0

何がエラーですか、具体的には? – Programmer

+0

ちょうど404が見つかりません – Tony

1

あなたが定義されたルート:あなたは(あなたが使用していないと仮定すると、それらが同じであることを確認する必要があり

http://localhost/MyController/MyView/11/25?someID=0 

[Route("{page}/{size}")] 
public ActionResult MyView(int page = 0, int size = 25, FilterModel filterModel = null) 
{ 
    ... 
} 

は、あなたがしたいURLと一致していませんコントローラーのRoutePrefix属性):

[Route("MyController/MyView/{page}/{size}")] 
public ActionResult MyView(int page = 0, int size = 25, FilterModel filterModel = null) 
{ 
    ... 
} 

URL http://localhost/MyController/MyView?someID=0が機能する理由は、あなたのDefaultルートと一致し、正しいコントローラとアクション名をフレームワークに渡してアクションメソッドに到達する可能性が高いためです。

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

も注意してくださいあなたは属性のルーティングを有効にするためにroute.MapMvcAttributeRoutes()前に、デフォルトルートを持っている必要があること。

関連する問題