しばやん雑記

Azure とメイドさんが大好きなフリーランスのプログラマーのブログ

ASP.NET MVC 3 の Razor ビューエンジンでちょっと嬉しいこと

ASPX はファイルの先頭に以下のような @ から始まるディレクティブを書く必要があります。懐かしいですね。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage" %>

Razor は特に宣言は必要ないですが、殆どの場合は @model で利用するモデルクラスを書くことになると思います。

@model MvcApplication1.Models.Product

この 2 つは役割自体は似ていますが大きな違いがあります。それは HTML として出力される時に空白行が残るかどうかです。ASPX はディレクティブが存在した部分は空白行になりますが、ASP.NET MVC 3 RC 2 の Razor では @model などの宣言があった部分は空白行が残らなくなりました。

 
 
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

ASPX の時は先頭に XML 宣言を書きたくてもディレクティブが邪魔をして、上記のように 2,3 行下に書かれたりとかありましたね。Razor はテンプレートに必須の宣言が無いので自由に書けるようになりました。実に素晴らしい!

HTML では改行と空白は余計なマージンが発生したりとレイアウト崩れの原因にもなるので、この変更はちょっと嬉しいですね。