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

ASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくするASP.NET MVC のルーティング設定を少しだけ REST ぽくする
ASP.NET MVC のルーティング設定を少しだけ REST ぽくするdany1468
 
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみた
自作node.jsフレームワークとnginxを使ってラジオサイトを作ってみたYuki Takei
 
20091030cakephphandson 01
20091030cakephphandson 0120091030cakephphandson 01
20091030cakephphandson 01Yusuke Ando
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSAyumi Goto
 
EC-CUBEプラグイン講義
EC-CUBEプラグイン講義EC-CUBEプラグイン講義
EC-CUBEプラグイン講義ria1201
 
Web技術勉強会23回目
Web技術勉強会23回目Web技術勉強会23回目
Web技術勉強会23回目龍一 田中
 
Ruby on Rails Tutorial
Ruby on Rails TutorialRuby on Rails Tutorial
Ruby on Rails TutorialKen Iiboshi
 
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~
基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~normalian
 
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョンWeb アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョン
Web アプリケーション パターンと .NET - CLR/H 88 回 ~雪まつりデイ!~ バージョンAkira Inoue
 
StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践StackStormを活用した運用自動化の実践
StackStormを活用した運用自動化の実践Shu Sugimoto
 
Angular js はまりどころ
Angular js はまりどころAngular js はまりどころ
Angular js はまりどころAyumi Goto
 
PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理PowerShellを使用したWindows Serverの管理
PowerShellを使用したWindows Serverの管理junichi anno
 
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勉強会 #jsugY Watanabe
 
scala+liftで遊ぼう
scala+liftで遊ぼうscala+liftで遊ぼう
scala+liftで遊ぼうyouku
 
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 Hokuriku.NET ASP.NET MVC入門 「実践」 20120825
Hokuriku.NET ASP.NET MVC入門 「実践」 20120825 miso- soup3
 
データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回データマイニング+WEB勉強会資料第6回
データマイニング+WEB勉強会資料第6回Naoyuki Yamada
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについてtako pons
 

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