1

なぜ私はこれに常に苦労しているのかわかりませんが、誰かがこれがうまくいかない理由を説明できますか?

/コントローラーの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 } 
        );
    }

私には次のように書かれています。

  • acontrollerが定義されていない場合は、 を使用しますHome
  • actionが定義されていない場合は、 を使用しますIndex
  • 入力された URL には controller = が含まれてgalleryおり、アクションは URL に含まれていないため、Index.

私は何かを見逃していますか、それともこれは不必要に混乱してばかげていますか?

私はいつも MVC3 ルーティングに問題があると思っていましたが、それを受け入れました。それから、Rails と Node フレームワークをいじり始めました。それらのルーティングはとてつもなく単純なので、.NET MVC が機能しないときや、複雑なパターンを使用するようになると、イライラするだけです。

誰かが尋ねた場合の参考のために、ギャラリーコントローラー、アクション、およびビューはすべて定義されており、参照すると動作し/gallery/indexます。

public class GalleryController : Controller
{
    public ActionResult Index()
    {
        return View();
    }
}
4

2 に答える 2

5

あなたは間違いなく何か間違ったことをしているはずです、またはあなたが私たちに示していないコードがあります. 次の手順を実行します。

  1. デフォルトのウィザード (インターネット アプリケーション)を使用して、新しい ASP.NET MVC 3 アプリケーションを作成します。
  2. の内容を次のように置き換えますHomeController.cs

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return Content("home/index");
        }
    }
    
    public class GalleryController : Controller
    {
        public ActionResult Index()
        {
            return Content("gallery/index");
        }
    }
    
  3. 打つF5

何が起こるかは次のとおりです。

requested url    |   result
-----------------+---------------
/                |   home/index
/home            |   home/index
/home/           |   home/index
/home/index      |   home/index
/home/index/     |   home/index
/gallery         |   gallery/index
/gallery/        |   gallery/index
/gallery/index   |   gallery/index
/gallery/index/  |   gallery/index

まさに予想通りですね。

于 2012-07-09T21:19:07.923 に答える