SlideShare a Scribd company logo
1 of 20
Download to read offline
Pro ASP.NET MVC 3 Framework

CHAPTER 11
URLs, Routing, and Areas
@84zume
2


目次
1. Routing System


2. Area


3. Beautiful URL
3




Routing System
4


Routing Systemとは
=URLをコントローラーやアクションと結び付ける仕組み

• Webフォームとの違い
   Webフォームは、ページの物理的な場所がURLになる
   URL  -> http://XXXX.com/Top.aspx
   物理パス -> c:¥inetpub¥wwwroot¥XXXX¥Top.aspx



=機能:Incoming URLの処理とOutgoing URLの生成

• I:コントローラーとアクションへのマッピング
• O:HTMLのリンクの生成
5




Incoming URLの話

URLを通して、アプリケーションに入ってくるときの話。
6


URL Pattern

http://84zumeworks.com/Admin/Person/10


          ホスト名

               1st Segment   2nd Segment

                                           3rd Segment


       MVCの良いところ
       これらを何にマッピングするかを
       柔軟に実装・変更できることが良いとこ
7


    どこにマッピングルールを書くのか
    = Global.asax の Application_Start です。
public class MvcApplication : HttpApplication
{
    protected void Application_Start()
    {
        //...
        RegisterRoutes(RouteTable.Routes);
    }

     public static void RegisterRoutes(RouteCollection routes)
     {
         routes.MapRoute(
             "Default",
             "{controller}/{action}/{id}",
             new { controller = "Home", action = "Index", id = UrlParameter.Optional }
         );
     }
}



RouteTableのRouteコレクションにマッピング情報を追加する
8


どうマッピングされるか
Incoming URL
http://84zumeworks.com/Admin/Person/10



マッピングルール
"{controller}/{action}/{id}"




controller = “Admin”
action     = “Person”
id         = “10”
9


マッピングルールのバリエーション

routes.MapRoute(
     “84zumeWorksMap",       名前
                                                  マッピング方法
     "{controller}/{action}/{id}/{*catchall}",

     new { controller = "Home", action = "Index", id = UrlParameter.Optional },

     new                                                           デフォルト値
           {
                controller = "^H.*",
                httpMethod = new HttpMethodConstraint("GET"),
                customConstraint = new UserAgentConstraint("IE")
                                                                    制約
           },

     new[] {"UrlsAndRoutes.Controllers"}
);                                           探す名前空間
10




Outgoing URLの話

HTMLに出力されるURLの話
11


どう出力されるか
@Html.ActionLink(“Here”, “About”)


<a ref=“Home/About”>Here</a>



@Html.ActionLink(
     “Here”, “List”, “Catalog”, new {page=789})


<a ref=“Catalog/List?page=789”>Here</a>

※マッピングルールに従う。
12




Routing Systemの拡張ポイント
13


Routing Systemの拡張ポイント
• RouteBaseをオーバーライドする。
  {controller}や{action}以外のマッチング規則を追加できる。
  サブドメインに基づくルーティングも書ける。
    http://warehouse.84zumeworks.com/




• IRouteHandlerを実装する。
そもそものルーティングの仕組みを変更できる。
→
ちなみに…MVCRouteHandler(MvcHandler)は
controllerのインスタンス化とかを内部的にしてる。
14




Area
15


Areaとは
=大きなアプリを分割できる仕組み

•例
 • 右のような感じ
 • 階層がなんかいけてない


• 分割例
  • 本体
  • 管理者画面
  • http://84zumeworks.com/Admin
  • Adminエリアのデフォルトコントローラー
  • Adminコントローラー
16




Beautiful URL
17


URLは大事。


   http://omniti.com/helps/national-geographic
18




おわりに
19


まとめ


1. URLには2種類の意味があることを覚えるべし


2. Areaをつかってサイトを上手に分割すべし


3. きれいなURLを意識するべし
20


参考文献
• CodePlex
「ASP.NET MVC 3 RTM」
 http://aspnet.codeplex.com/releases

More Related Content

Similar to Pro aspnetmvc3framework chap11

自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
Yuki Takei
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
Yusuke Ando
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョンWeb アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Akira Inoue
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
Naoyuki Yamada
 

Similar to Pro aspnetmvc3framework chap11 (20)

ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくするASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails Tutorial
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
 
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョンWeb アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
 
20090606
2009060620090606
20090606
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころ
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼう
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
 
電子国土Part2
電子国土Part2電子国土Part2
電子国土Part2
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 

Pro aspnetmvc3framework chap11