0

このページ:

http://nerddinnerbook.s3.amazonaws.com/Part4.htm

コントローラを追加した後、参照しhttp://localhost:xxxx/dinnersて期待どおりに動作します。私の質問は、「ディナー」を使用することをどのように知っているのですか?「夕食」はどこにありますか?私のコントローラーの名前はDinnersControllerですが、Dinnersという言葉はどのようにして意味のあるものになりましたか。LinqtoSQLやその他の場所には表示されません。私は明らかな何かを見落としていると確信しています。

コードは次のとおりです。

    //
        // HTTP-GET: /Dinners/

        public void Index()
        {
            Response.Write("<h1>Coming Soon:

夕食");}

        //
        // HTTP-GET: /Dinners/Details/2

        public void Details(int id)
        {
            Response.Write("<h1>Details DinnerID:

"+ id +" ");}

「夕食」はどこから来たのですか?

助けてくれてありがとう。

編集:私は投稿する前に記事をさらに読み、global.asaxについて見ましたが、これで夕食にどのようにマッピングされたかわかりません:

 public class MvcApplication : System.Web.HttpApplication
    {
        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

            routes.MapRoute(
                "Default",                                              // Route name
                "{controller}/{action}/{id}",                           // URL with parameters
                new { controller = "Home", action = "Index", id = "" }  // Parameter defaults
            );

        }

        protected void Application_Start()
        {
            RegisterRoutes(RouteTable.Routes);
        }
    }
4

3 に答える 3

4

ASP.NET MVCは、設定より規約を優先します。つまり、Controllerサフィックスが付いたコントローラーを検索し、URLの一部として含めず、Controllerのプレフィックスのみを含めます。したがって、HomeControllerがある場合は、DinnersControllerが/Dinners/を意味するのと同じように/Home/にアクセスできます。これは、ASP.NETMVCフレームワーク自体の一部として発生します。

Global.asaxのデフォルトルートを見ると、次のようなURLの形式が使用されていることがわかります...

"{controller}/{action}/{id}"

これは、コントローラーの名前とアクションの名前を取得し、要求をそのメソッドにポイントすることを意味します。

したがって、DinnersController Indexアクションメソッドの場合、/ Dinners/Indexのようになります。

于 2009-05-13T16:57:26.147 に答える
2

目の前にサンプルはありませんが、ルーティング(を参照Global.asax)がDinnersデフォルトのコントローラー名として使用するように設定されていると思われます。責任のある特定の行は次のようになります

new { controller = "Dinners", action = "Index", id = "" }

編集:質問を読み直してください、これは完全には答えません。あなたが混乱した問題は、それ/dinnersが解決されたことDinnersControllerです。デフォルトの動作ではありません。その場合、チャドの答えは正しいです、そしてあなたが言ったように-フレームワークは基本的にその部分を切り落とし、Controllerどの名前をマッピングするかを決定します。

于 2009-05-13T16:58:42.153 に答える
1

これは、MVCがデフォルトルートを介して提供する「暗黙の構成」(従来の構成と構成)の一部です。

「www.mysite.com/dinners」にアクセスすると、MVCはURL内の「dinners」を自動的に確認し、「DinnersController」という名前のコントローラーを探して「Index」メソッドを呼び出します。「www.mysite.com/dinners/details」にアクセスすると、MVCは「DinnersController」を探して「Details」メソッドを呼び出します。

レール上のルビーを見ると、ほぼ同じように動作します(これは、ほぼ確実にMicrosoftがこれを入手した場所です)。

于 2009-05-13T17:01:25.267 に答える