Nancy

提供: MonoBook
2014年11月4日 (火) 08:39時点における153.220.40.143 (トーク)による版
ナビゲーションに移動 検索に移動

Nancyとは、.NET向けの軽量ウェブフレームワークである[1]

概要

調査中

未分類

Minify & Bundleを使う

ASP.NET 4から搭載されたMinify & BundleをNancyから使ってみる。

NuGetから必要なパッケージを入れる

ASP.NET関連のほとんどが、いつの間にかASP.NET本体から分離されてNuGetへ移行している。Linux上のMonoでもASP.NETを使えという思し召しらしい。Xamarin Studioからも一発で入る。

web.configを編集

<configuration>
  <configSections>
      <!--  追加 -->
      <section name="razor" type="Nancy.ViewEngines.Razor.RazorConfigurationSection, Nancy.ViewEngines.Razor" />
      <!--  追加 -->
  </configSections>

  <!--  追加 -->
  <razor disableAutoIncludeModelNamespace="false">
    <assemblies>
      <add assembly="System.Web.Optimization" />
      <add assembly="System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
    </assemblies>
    <namespaces>
      <add namespace="System.Web.Optimization" />
    </namespaces>
  </razor>
  <!--  追加 -->

  <system.webServer>
    <!--  追加 -->
    <modules runAllManagedModulesForAllRequests="true">  
      <remove name="BundleModule" />  
      <add name="BundleModule" type="System.Web.Optimization.BundleModule" />  
    </modules> 
    <!--  追加 -->
  </system.webServer>
</configuration>

バンドルを登録する

どこでもいいので登録内容が記述されたメソッドを作る。 純正に右に倣えで「App_Start/BundleConfig.cs」にしておくと無難だと思われる。

using System;
using System.Web.Optimization;

namespace Test
{
    public class BundleConfig
    {
        public static void RegisterBundles(BundleCollection bundles) 
        {
            bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                "~/Scripts/jquery-{version}.js"));
        }
    }
}

サーバー起動時に登録する。 Global.asax.cs(無ければ作る)のApplication_Startメソッドから上記の登録メソッドを呼び出す。

using System;
using System.Web.Optimization;

namespace Test
{
    public class Global : System.Web.HttpApplication
    {
        protected void Application_Start(Object sender, EventArgs e)
        {
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
    }
}

Scripts.Renderの違い

ASP.NET 4で標準の記述方法が使えない。

@Scripts.Render("~/bundles/jquery")

以下を使うことで代用する。

@Html.Raw(Scripts.Render("~/bundles/jquery").ToString())

ToStringを忘れるとRazorが落ちる。凄い嵌った。

関連項目

参考文献