なぜ私はこれに常に苦労しているのかわかりませんが、誰かがこれがうまくいかない理由を説明できますか?
/
コントローラーのindex
アクションにリダイレクトします。home
/gallery/
404 not found エラーをスローします。
/gallery/index
コントローラーのindex
アクションにリダイレクトします。gallery
ドキュメントから:
ルートを定義するときに、パラメーターのデフォルト値を割り当てることができます。そのパラメーターの値が URL に含まれていない場合は、デフォルト値が使用されます。ディクショナリ オブジェクトを Route クラスの Defaults プロパティに割り当てることによって、ルートの既定値を設定します。
これがどのようにその規則に従わないのか理解できません:
public static void RegisterRoutes(RouteCollection routes)
{
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
私には次のように書かれています。
- a
controller
が定義されていない場合は、 を使用しますHome
。 action
が定義されていない場合は、 を使用しますIndex
。- 入力された URL には controller = が含まれて
gallery
おり、アクションは URL に含まれていないため、Index
.
私は何かを見逃していますか、それともこれは不必要に混乱してばかげていますか?
私はいつも MVC3 ルーティングに問題があると思っていましたが、それを受け入れました。それから、Rails と Node フレームワークをいじり始めました。それらのルーティングはとてつもなく単純なので、.NET MVC が機能しないときや、複雑なパターンを使用するようになると、イライラするだけです。
誰かが尋ねた場合の参考のために、ギャラリーコントローラー、アクション、およびビューはすべて定義されており、参照すると動作し/gallery/index
ます。
public class GalleryController : Controller
{
public ActionResult Index()
{
return View();
}
}