.NET TIPS

[ASP.NET MVC]カスタムのビュー・エンジンを利用するには?(活用編)[3.5、C#、VB]

山田 祥寛
2010/02/04

 本稿は、「TIPS:[ASP.NET MVC]カスタムのビュー・エンジンを利用するには?(実装編)」の続きである。実装編では、XSLT(eXtensible Stylesheet Language Transformations)スタイルシートをビュー・スクリプトとして利用するXsltViewEngineエンジンを作成した。

 本稿では、実装編で作成したXsltViewEngineエンジンをアプリケーションに登録し、アクション・メソッドから実際に呼び出してみよう。

1. ビュー・エンジンをアプリケーションに登録する

 ビュー・エンジンを登録する方法については、「TIPS:NVelocityをビュー・エンジンとして利用するには?」でも紹介したとおりである。Global.asaxファイルのApplication_Startイベント・ハンドラから、ViewEngineCollectionオブジェクト(System.Web.Mvc名前空間)のAddメソッドを呼び出すことで行える。

using MvcAppCs.Extensions;

protected void Application_Start() {
  RegisterRoutes(RouteTable.Routes);
  ViewEngines.Engines.Add(new XsltViewEngine());
}
Sub Application_Start()
  RegisterRoutes(RouteTable.Routes)
  ViewEngines.Engines.Add(New XsltViewEngine())
End Sub
XsltViewEngineエンジンを登録するためのコード(Global.asax。上:C#、下:VB)

2. アクション・メソッドを作成する

 XsltViewEngineエンジンを登録できたら、これを利用するためのアクション・メソッドを作成する。

 本来、XML文書はデータベースなどから取得するところであるが、本稿では、取りあえずリテラルとしてアクションにハード・コーディングしている。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Mvc.Ajax;
using System.Xml.Linq;

namespace MvcAppCs.Controllers {
  public class ViewController : Controller {

    public ActionResult Index() {

      // 文字列を解析し、XDocumentオブジェクトを生成
      var doc = XDocument.Parse(@"
      <book isbn='978-4-7980-2401-1'>
        <title>ASP.NET MVC 実践プログラミング</title>
        <price>3360</price>
        <publish>秀和システム</publish>
        <memo>NET Frameworkの新たなWebフレームワークASP.NET MVCがいよいよ登場です。本書ではASP.NET MVCを初めて学ぶ人のために、...</memo>
      </book>
      ");

      // XDocumentオブジェクトをモデルとしてビューに引き渡す
      return View(doc);
    }
  }
}
Public Class ViewController
  Inherits System.Web.Mvc.Controller

  Function Index() As ActionResult

    // XMLリテラルからXDocumentオブジェクトを生成
    Dim doc As XDocument = _
    <?xml version="1.0"?>
    <book isbn='978-4-7980-2401-1'>
        <title>ASP.NET MVC 実践プログラミング</title>
        <price>3360</price>
        <publish>秀和システム</publish>
        <memo>NET Frameworkの新たなWebフレームワークASP.NET MVCがいよいよ登場です。本書ではASP.NET MVCを初めて学ぶ人のために、...</memo>
    </book>

    ' XDocumentオブジェクトをモデルとしてビューに引き渡す
    Return View(doc)
  End Function
End Class
XsltViewEngineエンジンの動作を確認するためのアクション・メソッド(上:ViewController.cs、下:ViewController.vb)

 ここで注目していただきたいのは、ビュー・エンジンの選択はASP.NET MVCが自動的に行ってくれるので、アクション・メソッドの側ではビュー・エンジンを意識したコードを記述する必要はない、という点だ。本稿のケースでは、デフォルトのWebFormViewEngine→XsltViewEngineの順でビュー・エンジンが登録されているので、内部的には.aspx→.ascx→.xsltファイルの順でビュー・スクリプトが検索されることになる。

3. ビュー・スクリプトを作成する

 最後に、モデル(XDocumentオブジェクト)を処理するためのビュー・スクリプト(.xsltファイル)を用意する。

 XSLTスタイルシートに関する詳細は本稿では割愛するので、詳細については「XMLテクニック集」などの記事を参考にしてほしい。

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
  <!--変換後の出力形式を指定-->
  <xsl:output method="html" indent="yes"/>
 
  <xsl:template match="/"> 
    <table border="1">
      <tr>
        <td>
          <!--isbn属性の値に応じて対応する画像を生成-->
          <img>
            <xsl:attribute name="src">
              http://www.wings.msn.to/books/<xsl:value-of select="book/@isbn"/>/<xsl:value-of select="book/@isbn"/>.jpg
            </xsl:attribute>
          </img>
        </td>
        <td align="top">
          <!--そのほか、必要な文字列情報を取得-->
          <h3>
            <xsl:value-of select="book/title"/>
          </h3>
          <xsl:value-of select="book/publish"/>/
          <xsl:value-of select="book/price"/>円
          <hr />
          <xsl:value-of select="book/memo"/>
        </td>
      </tr>
    </table>
  </xsl:template>
</xsl:stylesheet>
渡されたモデルを処理するためのXSLTスタイルシート(Views/View/Index.xslt)

 .xsltファイルの保存先(ファイル名)は、.aspxファイルと同様、

~/View/<コントローラ名>/<アクション名>.xslt

とする必要がある。

 以上の手順を終えたら、サンプルを実行してみよう。

XsltViewEngineエンジンによって出力された書籍情報

 「http://localhost:8080/View/Index」のようなアドレスでアクセスした結果、上のような結果が得られれば、XsltViewEngineは正しく動作している(ポート番号の部分は環境によって異なる)。End of Article

利用可能バージョン:.NET Framework 3.5
カテゴリ:Webフォーム 処理対象:ASP.NET MVC
使用ライブラリ:ViewEngineCollectionオブジェクト(System.Web.Mvc名前空間)
関連TIPS:[ASP.NET MVC]カスタムのビュー・エンジンを利用するには?(実装編)
関連TIPS:NVelocityをビュー・エンジンとして利用するには?

この記事と関連性の高い別の.NET TIPS
[ASP.NET MVC]カスタムのビュー・エンジンを利用するには?(実装編)
[ASP.NET MVC]NVelocityをビュー・エンジンとして利用するには?
[ASP.NET MVC]ファイルのアップロードを行うには?
このリストは、(株)デジタルアドバンテージが開発した
自動関連記事探索システム Jigsaw(ジグソー) により自動抽出したものです。
generated by

「.NET TIPS」


Insider.NET フォーラム 新着記事
  • 第2回 簡潔なコーディングのために (2017/7/26)
     ラムダ式で記述できるメンバの増加、throw式、out変数、タプルなど、C# 7には以前よりもコードを簡潔に記述できるような機能が導入されている
  • 第1回 Visual Studio Codeデバッグの基礎知識 (2017/7/21)
     Node.jsプログラムをデバッグしながら、Visual Studio Codeに統合されているデバッグ機能の基本の「キ」をマスターしよう
  • 第1回 明瞭なコーディングのために (2017/7/19)
     C# 7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。これらは分かりやすいコードを記述するのに使える
  • Presentation Translator (2017/7/18)
     Presentation TranslatorはPowerPoint用のアドイン。プレゼンテーション時の字幕の付加や、多言語での質疑応答、スライドの翻訳を行える
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

Insider.NET 記事ランキング

本日 月間