0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ルーティングの設定の基本(ASP.NET)

Last updated at Posted at 2023-04-18

やりたいこと

ルーティングを設定し、ホスト名へアクセスした際のページを設定したい。

初期設定では、デフォルトのページが表示されます。

デフォルトでは、ASP.NETのデフォルトページが設定されています。
image.png

デフォルトのページは、ユーザーにとっては意味のないページになります。試しに、itemページ(商品一覧ページ)を設定します。
image.png

変更するファイルとソースコード

App_Start>RouteConfig.vbのファイルを編集すれば、設定することが可能になります。
image.png
ソースコード

Imports System
Imports System.Collections.Generic
Imports System.Linq
Imports System.Web
Imports System.Web.Mvc
Imports System.Web.Routing

Public Module RouteConfig
    Public Sub RegisterRoutes(ByVal routes As RouteCollection)
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}")

        routes.MapRoute(
            name:="Default",
            url:="{controller}/{action}/{id}",
            defaults:=New With {.controller = "Home", .action = "Index", .id = UrlParameter.Optional}
        )
    End Sub
End Module

変更後(index)

routes.MapRouteにあるdefaultsの設定(コントローラーとアクション)を変えることで対応することができます。以下のコードでは、以下のように設定しています。

  • .controller ⇒ item 
  • .action ⇒ Index

ソースコード

        routes.MapRoute(
            name:="Default",
            url:="{controller}/{action}/{id}",
            defaults:=New With {.controller = "item", .action = "Index", .id = UrlParameter.Optional}
        )

設定後に、ホスト名にアクセスすると、商品一覧ページをトップに表示することができます。
image.png

変更後(create)

商品登録ページを表示したい場合は、以下のように設定します。

  • .controller ⇒ item 
  • .action ⇒ create

ソースコード

        routes.MapRoute(
            name:="Default",
            url:="{controller}/{action}/{id}",
            defaults:=New With {.controller = "item", .action = "create", .id = UrlParameter.Optional}
        )

設定後に、ホスト名にアクセスすると、商品登録ページをトップに表示することができます。
image.png

変更後(details)

商品の詳細を表示したい場合、同じように設定してしまった場合、エラーとなってしまいます。原因は、idを設定していないため、どの商品に対してのルーティングなのかが分からないためです。

        routes.MapRoute(
            name:="Default",
            url:="{controller}/{action}/{id}",
            defaults:=New With {.controller = "item", .action = "Details", .id = UrlParameter.Optional}
        )

image.png

そのため、商品が判別できるように、idを設定することで、表示されます。
ソースコード

 routes.MapRoute(
            name:="Default",
            url:="{controller}/{action}/{id}",
            defaults:=New With {.controller = "item", .action = "details", .id = 2},
            constraints:=New With {.id = "\d+"}
        )

image.png
ここでconstraintsを追記しています。このconstraintsを指定しなければ、悪意あるユーザーがブラウザ上からconstraintsで定義されていない値を送信できるようになってしまうためにあります。

注意事項

  • この記事では、visual studio 2022を使用しているので、試してみたい方は事前に準備が必要です。
  • 関連する記事の一覧はこちら
    ※参照先のリンクが切れている場合は、トップページから確認してください。

この記事は誰向けの記事か?

  • 試しにASP.NETを始めてみたいと思っている人

環境

本記事における注意事項

  • 本記事は、備忘録としてまとめたものになります。
  • 他の方の参考になる可能性も踏まえて、一般公開も行なっております。
  • また記載内容はすべて、正しい内容が記載されているとは限りません。
  • 誤った内容を見つけた場合は、ご指摘をお願いいたします。
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?