Quantcast
Channel: かずきのBlog@hatena
Viewing all articles
Browse latest Browse all 1387

ASP.NET MVCの個人的なメモ。テンプレートとか、共通的に使うViewとか

$
0
0

ASP.NET MVC弱者なのがつらい今日この頃。ASP.NET MVCの基本のテンプレートを見ながら少しだけ構造をメモっておこうと思います。主にViewまわり

  • Views
    • Shared
      • _Layout.cshtml
      • Error.cshtml
    • _ViewStart.cshtml
    • Web.config

_Layout.cshtml

ページのテンプレートになる人。中身はこんなかんじ。

<!DOCTYPE html><html><head><metacharset="utf-8" /><metaname="viewport"content="width=device-width" /><title>@ViewBag.Title</title>    @Styles.Render("~/Content/css")    @Scripts.Render("~/bundles/modernizr")</head><body>
    @RenderBody()

    @Scripts.Render("~/bundles/jquery")
    @RenderSection("scripts", required: false)
</body></html>

@RenderBody()で、このテンプレートを使ったページの本体を出力しつつ、@RenderSection(セクション名, required: 必須かどうか)を使って、メインのボディ部分以外も、このテンプレートを適用した人でカスタマイズできるようにしている。

因みにセクションの部分はテンプレートを適用したViewで@section セクション名 { ... }のようにして書くことができる。Razorすっきりかけていいよ。例えば以下のような感じ。

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

@section scripts {
    <scripttype="text/javascript">        $(function(){            $('h2').text("Hello jQuery");});</script>
}

Error.cshtml

エラーページ。FilterConfigでグローバルに指定されているHandleErrorAttributeがデフォルトで表示するエラーページ。MSDNにもがっつりかいてある。

既定では、HandleErrorAttribute 属性を設定されたアクション メソッドが例外をスローすると、MVC は ~/Views/Shared フォルダーにある Error ビューを表示します。 

_ViewStart.cshtml

名前の通りViewの最初に自動で埋め込むやつ。さっき説明した_Layout.cshtmlは、ここでLayoutに指定されてるから特に何もしない場合は自動で適用されるという仕掛け。

@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Web.config

アプリケーションのルートにあるWeb.configではないことに注意。おそらく、Viewsフォルダの下にあるcshtmlを隠すことが主な目的だと思われる…。以下のような記載があるので。

<httpHandlers><add path="*"verb="*"type="System.Web.HttpNotFoundHandler"/></httpHandlers>

まとめ

ViewsのSharedとか_Layoutとか_ViewStartとか、空で作るといつも名前なんだっけ…ってなるので個人的なメモでした。
プロジェクトテンプレートは、なんだこんなにコード吐きやがって!!と思っても、これだけのコードを吐くということは、作成者側に何らかの意図があるということなので理解したうえで、捨てるなら捨てるというのがよろしいかと思います。


Viewing all articles
Browse latest Browse all 1387

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>