ASP.NET MVCルーティングの概要
このチュートリアルでは、学びますASP.NET MVCが重要な要素です。このコンポーネントは、呼び出されたASP.NETルーティングクライアントをマッピングする責任があり、特定のクラスへのパスを要求します(コントローラ)の関数である(アクション)。そして、チュートリアルの最後に、あなたは標準のルートが特定のクラスの特定の機能にどのようにマッピングされるかを把握します。
デフォルトのルーティングテーブルを使用します
あなたが新しい作成するとASP.NET MVCのアプリケーションを、それがデフォルトですでに2つの場所で設定されているASP.NETルーティング。
まず、あなたは、アプリケーション構成ファイルにすることができます(Web.configファイル)を探しASP.NETルーティング関連の設定を。次のようにこれらのノードは、次のとおりです。
リットルの system.web.httpModules
リットルの system.web.httpHandlers
リットルの system.webserver.modules
リットル system.webserver.handlersセクション
彼らはランダムに変更したり、削除しないでください、理解していない前に、それはあなたのアプリケーションや引き起こす可能性がASP.NETルーティングが正しく動作しません。
第二に、より重要なのは、グローバルファイル内のルーティングテーブル(Global.asaxの)が作成しました。この特定のファイルが含まれているASP.NETのアプリケーションのライフサイクルなどのいくつかのHTTPイベント処理を。例えば、我々は、ルーティングテーブルに焦点を当てているのApplication_Startイベントを作成しました。
リスト1 - 〜/ Global.asax.cs
使用してSystem.Web.Mvcを。
使用してSystem.Web.Routingを。
名前空間MVCTestDemo
{
パブリック クラス MvcApplication:System.Webの。HttpApplication
{
公共の 静的な 無効 RegisterRoutes(RouteCollectionのルート)
{
routes.IgnoreRoute("{リソース} .axd / {*}パス情報")。
routes.MapRoute(
「デフォルト」、// ルート名
"{controller}/{action}/{id}", // URL参数
new { controller = "Home", action = "Index", id = "" } // 默认值
);
}
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
}
}
}
当你的 ASPNET MVC应用程序首次启动的时,Application_Start()将会被系统自动调用。这个函数调用了一个静态函数RegisterRoutes(),从代码中可以看出,这个函数创建了一个路由表。
私たちは下に分析してみましょう(RegisterRoutes)と命名含む関数のデフォルトルータを、このマッピングのルータ最初の部分はあるのUrlのコントローラ名。第二部は、アクセスするように指示されますコントローラのどの下のアクションを。そして、最後の1 以上のIDを述べたが、に渡される表示であるアクションパラメータ。
あなたは、ブラウザに次のように入力すると、想像したURL(ホストとポートに加えて)住所:
/ホーム/インデックス/ 3
あなたが見ているかもしれスマート、これは次のアドレスを意味します。
コントローラ=ホーム
アクション=インデックス
ID = 3
はい、あなたはこの要求したときに、上記のコードを参照するURLを、この「解釈」であるとき。より深く、そのURLのクライアントは、このような関数を呼び出すように、アドレス。
ホームコントローラ。インデックス(3 )
もちろん、これはほんの一例です。正確には、目の前ににHomeController私たちはクラスを定義することで、このクラスが含まれているインデックス(int型のID)機能を。実行している場合は、ASP.NET MVCは、インスタンス化しますにHomeControllerを、そう呼んおよびパラメータを渡します。
あなたはこのアドレスを要求したときに、もう一度お試しください!
/ホーム
もちろん、あなたは、システムにしなかったアクションとIDの一部を。今回は、の上部に振り返るリスト1のコードのリスト。はい、非常に明確にシステムに伝えます:
lの とき無コントローラー、このデフォルトの一環ホーム。
lの ときノーアクション、このデフォルトの一部インデックス ;
lは 何も与えられたがないとき最後に、idは、デフォルトではNULL文字列になります。
あなたはこの部分を理解していない場合は、参照リスト2のコード。
リスト2 - 〜/コントローラ/ HomeController.cs
使用してSystem.Web.Mvcを。
名前空間のMVCTestDemo.Controllers
{
【のHandleError ]
パブリック クラス にHomeController:コントローラ
{
公共 のActionResultインデックス(文字列 ID)
{
返すビューを();
}
}
}
コードリスト2の部分は、あるASP.NET MVCで C 。Cは、あるコントローラ。ASP.NETの命名規則は、名前コントローラ。
リクエスト /ホーム/インデックス/ 3 そうのURL、呼び出しがある ホームController.Index(3) 。
同様に、要求場合/ テスト/について/ 3、コールは当然であるテストコントローラ。について(3) 。
あなたが要求したときただし、 /ホーム/インデックス/ 3 、このパラメータにする必要はありません3「担当」。あなたは完全にパラメータを無視することができます。リスト3は、明確に表現することができます。非のためにコントローラとアクションセクション、あなたは「無関心」を選択することができます
リスト3 - 〜/コントローラ/ HomeController.cs
使用してSystem.Web.Mvcを。
名前空間のMVCTestDemo.Controllers
{
【のHandleError ]
パブリック クラス にHomeController:コントローラ
{
公共 のActionResultインデックス()
{
返すビューを();
}
}
}
当社レジスタルーティングテーブルによると、それは次のようになります。デフォルトでは、我々は尋ねたときに/ホーム(パラメータがあるとき、このような関数呼び出しとみなしたときにパスを文字列データ型、参照コードリスト2):
HomeController.Index(String.Emptyを)
当然,从字面上可以理解配置的参数(id)明显是一个整型。你完全可以选择使用int来作为数据类型。但是请注意,我们所配置的是一个默认为空字符串的id,如果你仅仅使用整型,将会抛出异常(无法将null转换为Int32),你完全可以使用可空类型(int?)。
转载于:https://www.cnblogs.com/sofire/articles/1603541.html