1

まとめ:

最近作業を開始したサイトのルート マッピングを見直しています。よく知らないルートに遭遇しました:

RouteTable.Routes.MapRoute(NamedRoutes.ROUTE_NAME, "urlSegment1/urlSegment2", new { });

MapRoute の「デフォルト」パラメーターは空のオブジェクトであることに注意してください。これは通常、コントローラー、アクション、および任意のパラメーターを指定する場所です。私はグーグルで検索してきましたが、探している答えを得るために正しい質問をしていないことがわかりました。

質問:

MapRoute の「デフォルト」パラメータが空のオブジェクトの場合、MVC ルーティングはどのように動作しますか? 答えは素晴らしいでしょう。ドキュメントのサポートはさらに優れています。

編集:

実際に使用されているルートは次のとおりです。

routes.MapRoute(NamedRoutes.BROWSE_MEN, "browse/Mens", new { } });

そして、次を使用して URL を生成するときに問題が発生しています。

Html.BeginForm("Add", "Signup", FormMethod.Post, new { id = "signup", enctype = "multipart/form-data" })
4

4 に答える 4

0

これらは文字列としてマッピングされ、この場合はすべてに一致します。デフォルトは、コントローラ/アクション パラメータの 1 つが URL によって提供されない場合にのみ存在します。この場合、無意味なデフォルトはありません。実際にはすべての文字列/文字列をキャッチしています。

于 2012-09-20T14:45:55.413 に答える
0

URL パラメーター (トークン) または既定値としてコントローラーを指定しない場合は、InvalidOperationException を取得する必要があります。

一致したルートには、必須の「コントローラー」ルート値が含まれていません。

アクションも同じ。それは受信リクエスト用です。URL 生成の場合、コントローラーやアクションは必要ありません。

于 2012-09-20T19:16:20.517 に答える
0

そこにあるルートは、URL ex. の 2 つのセグメントを正確に含むリクエストと一致します。http://localhost/urlSegment1/urlSegment2次のルートがこのリクエストを処理するのを避けるために、このルートが定義されていると思います。

于 2012-09-20T14:50:02.393 に答える
-1

デフォルトを指定する必要はありません。

したがって、デフォルトのオブジェクトが指定されていないかのように機能します

于 2012-09-20T13:19:27.823 に答える