メインメニューを開く

差分

Nancy/Minify & Bundleを使う

2,731 バイト追加, 2014年11月4日 (火) 08:48
ページの作成:「ASP.NET 4から搭載されたMinify & BundleをMac上のMonoとNancyから使ってみる。 ==NuGetから必要なパッケージを入れる== ASP.NET関...」
ASP.NET 4から搭載されたMinify & Bundleを[[Mac]]上の[[Mono]]とNancyから使ってみる。

==NuGetから必要なパッケージを入れる==
[[ASP.NET]]関連のほとんどが、いつの間にか[[ASP.NET]]本体から分離されて[[NuGet]]へ移行している。[[Linux]]上の[[Mono]]でも[[ASP.NET]]を使えという思し召しらしい。[[Xamarin Studio]]からも一発で入る。
*https://www.nuget.org/packages/Microsoft.AspNet.Web.Optimization/

==web.configを編集==
<pre>
<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>
</pre>

==バンドルを登録する==
どこでもいいので登録内容が記述されたメソッドを作る。
純正に右に倣えで「App_Start/BundleConfig.cs」にしておくと無難だと思われる。
<source lang="csharp">
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"));
}
}
}
</source>

サーバー起動時に登録する。
Global.asax.cs(無ければ作る)のApplication_Startメソッドから上記の登録メソッドを呼び出す。
<source lang="csharp">
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);
}
}
}
</source>

==Scripts.Renderの違い==
ASP.NET 4で標準の記述方法が使えない。
@Scripts.Render("~/bundles/jquery")
以下を使うことで代用する。
@Html.Raw(Scripts.Render("~/bundles/jquery").ToString())
ToStringを忘れると[[Razor]]が落ちる。凄い嵌った。

{{stub}}
匿名利用者