「ASP.NETバンドルでの相対パスを使用」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の3版が非表示) | |||
1行目: | 1行目: | ||
− | ==ASP.NETバンドルでの相対パスを使用== | + | ==[[ASP.NETバンドルでの相対パスを使用]]== |
− | [[ASP.NET.Core][ASP.NET]] | + | [[ASP.NET.Core]] | [[ASP.NET]] | |
====App_Start/BundleConfig.cs==== | ====App_Start/BundleConfig.cs==== | ||
using System.Configuration; | using System.Configuration; | ||
6行目: | 6行目: | ||
using System.Web.Optimization; | using System.Web.Optimization; | ||
− | namespace | + | namespace SalesMs[[R]]eport |
{ | { | ||
public class BundleConfig | public class BundleConfig | ||
{ | { | ||
// バンドルの詳細については、https://go.microsoft.com/fwlink/?LinkId=301862 を参照してください | // バンドルの詳細については、https://go.microsoft.com/fwlink/?LinkId=301862 を参照してください | ||
− | public static void | + | public static void [[R]]egisterBundles(BundleCollection bundles) |
{ | { | ||
bundles.Add(new ScriptBundle("~/bundles/jquery").Include( | bundles.Add(new ScriptBundle("~/bundles/jquery").Include( | ||
35行目: | 35行目: | ||
var transForm = new ApplicationContextPathTransform(appCtx); | var transForm = new ApplicationContextPathTransform(appCtx); | ||
− | foreach (var bundle in bundles. | + | foreach (var bundle in bundles.Get[[R]]egisteredBundles()) |
{ | { | ||
bundle.Transforms.Add(transForm); | bundle.Transforms.Add(transForm); | ||
49行目: | 49行目: | ||
this.applicationContextPath = applicationContextPath; | this.applicationContextPath = applicationContextPath; | ||
} | } | ||
− | public void Process(BundleContext context, | + | public void Process(BundleContext context, Bundle[[R]]esponse response) |
{ | { | ||
if (!string.IsNullOrEmpty(this.applicationContextPath)) | if (!string.IsNullOrEmpty(this.applicationContextPath)) | ||
57行目: | 57行目: | ||
// 指定されている場合、アプリケーションコンテキストパスの挿入 | // 指定されている場合、アプリケーションコンテキストパスの挿入 | ||
file.IncludedVirtualPath | file.IncludedVirtualPath | ||
− | = file.IncludedVirtualPath. | + | = file.IncludedVirtualPath.[[R]]eplace(@"~/", $@"~/{this.applicationContextPath}/"); |
} | } | ||
} | } | ||
71行目: | 71行目: | ||
*Web.Test.config | *Web.Test.config | ||
<appSettings> | <appSettings> | ||
− | <add key="ApplicationContextPath" value="/TestApp" xdt:Transform=" | + | <add key="ApplicationContextPath" value="/TestApp" xdt:Transform="[[R]]eplace" xdt:Locator="Match(key)"/> |
</appSettings> | </appSettings> | ||
− | *Web. | + | *Web.[[R]]elease.config |
<appSettings> | <appSettings> | ||
− | <add key="ApplicationContextPath" value="/ | + | <add key="ApplicationContextPath" value="/[[R]]eleaseApp" xdt:Transform="[[R]]eplace" xdt:Locator="Match(key)"/> |
</appSettings> | </appSettings> | ||
====_Layout.cshtml==== | ====_Layout.cshtml==== | ||
− | @Scripts. | + | @Scripts.[[R]]ender("~/bundles/jquery") |
− | @Scripts. | + | @Scripts.[[R]]ender("~/bundles/bootstrap") |
====実行結果==== | ====実行結果==== | ||
88行目: | 88行目: | ||
<script src="/TestApp/Scripts/bootstrap.js"></script> | <script src="/TestApp/Scripts/bootstrap.js"></script> | ||
*本番 | *本番 | ||
− | <script src="/ | + | <script src="/[[R]]eleaseApp/SalesMs[[R]]eport/Scripts/jquery-3.3.1.js"></script> |
− | <script src="/ | + | <script src="/[[R]]eleaseApp/SalesMs[[R]]eport/Scripts/bootstrap.js"></script> |
2020年2月16日 (日) 04:22時点における最新版
ASP.NETバンドルでの相対パスを使用
ASP.NET.Core | ASP.NET |
App_Start/BundleConfig.cs
using System.Configuration; using System.Web; using System.Web.Optimization; namespace SalesMsReport { public class BundleConfig { // バンドルの詳細については、https://go.microsoft.com/fwlink/?LinkId=301862 を参照してください public static void RegisterBundles(BundleCollection bundles) { bundles.Add(new ScriptBundle("~/bundles/jquery").Include( "~/Scripts/jquery-{version}.js")); bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include( "~/Scripts/jquery.validate*")); // 開発と学習には、Modernizr の開発バージョンを使用します。次に、実稼働の準備が // 運用の準備が完了したら、https://modernizr.com のビルド ツールを使用し、必要なテストのみを選択します。 bundles.Add(new ScriptBundle("~/bundles/modernizr").Include( "~/Scripts/modernizr-*")); bundles.Add(new ScriptBundle("~/bundles/bootstrap").Include( "~/Scripts/bootstrap.js")); bundles.Add(new StyleBundle("~/Content/css").Include( "~/Content/bootstrap.css", "~/Content/site.css")); // アプリケーションコンテキストパスを差し込む var appCtx = ConfigurationManager.AppSettings["ApplicationContextPath"]; var transForm = new ApplicationContextPathTransform(appCtx); foreach (var bundle in bundles.GetRegisteredBundles()) { bundle.Transforms.Add(transForm); } } } public class ApplicationContextPathTransform : IBundleTransform { private string applicationContextPath; public ApplicationContextPathTransform(string applicationContextPath) { this.applicationContextPath = applicationContextPath; } public void Process(BundleContext context, BundleResponse response) { if (!string.IsNullOrEmpty(this.applicationContextPath)) { foreach (var file in response.Files) { // 指定されている場合、アプリケーションコンテキストパスの挿入 file.IncludedVirtualPath = file.IncludedVirtualPath.Replace(@"~/", $@"~/{this.applicationContextPath}/"); } } } } }
Web.config
発行時にWeb.configを差し替える設定が必要
- Web.config
<appSettings> <add key="ApplicationContextPath" value=""/> </appSettings>
- Web.Test.config
<appSettings> <add key="ApplicationContextPath" value="/TestApp" xdt:Transform="Replace" xdt:Locator="Match(key)"/> </appSettings>
- Web.Release.config
<appSettings> <add key="ApplicationContextPath" value="/ReleaseApp" xdt:Transform="Replace" xdt:Locator="Match(key)"/> </appSettings>
_Layout.cshtml
@Scripts.Render("~/bundles/jquery") @Scripts.Render("~/bundles/bootstrap")
実行結果
- テスト
<script src="/TestApp/Scripts/jquery-3.3.1.js"></script> <script src="/TestApp/Scripts/bootstrap.js"></script>
- 本番
<script src="/ReleaseApp/SalesMsReport/Scripts/jquery-3.3.1.js"></script> <script src="/ReleaseApp/SalesMsReport/Scripts/bootstrap.js"></script>
© 2006 矢木浩人