

ASP.NET MVC 5(Visual Stodio 2013 Update 4)環境で開発しています。

Content(cssなど)やScript(Javascriptなど)は通常Project直下にフォルダを作成して展開すると思います。  
これを各Areaごとに配置することは可能でしょうか。

私が試した環境では、

Area  
-hogehoge  
-Content  
-Style.css 

と配置しましたが、

@Url.Content(~/hogehoge/Content/Style.css) も
@System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl(~/hogehoge/Content/)
もファイルが参照できなくエラーとなってしまいました。


CC BY-SA 3.0
2014-12-05T11:37:56.207
373
2014-12-06T02:59:35.893
908
question
.net c# asp.net razor
ASP.NET MVCでAreaごとにContentやScriptを設定したい


Areaではなく、Area **s** ではないですか？

* * *

## Url.Contentで参照する

以下の構成で  
![SolutionExplorer](https://i.stack.imgur.com/lO4uk.jpg)

`Style.css`は以下として  

[code]

    body {
        background-color: skyblue;
    }
    
[/code]

@Url.Contentで直接指定する場合、例えば`_Layout.cshtml`でlinkタグを用意するには以下の様に指定できます。  
Layoutを使わなくても同様に指定できると思います。

[code]

    <link href="@Url.Content("~/Areas/hogehoge/Content/Style.css")" rel="stylesheet" type="text/css" />
    
[/code]

![AffectedPage](https://i.stack.imgur.com/445Zh.jpg)  
**スタイルが反映されたページ**

## Styles.Render

ただ、なるべくバンドルを追加して `@Styles.Render` で追加する方がいいでしょう。  
それには以下の様にします。

まず、`App_Start/BundleConfig.cs`を開きます。

![BundleConfig.cs](https://i.stack.imgur.com/YyVqj.jpg)

以下のbundles.Addを追加します。

[code]

    bundles.Add(new StyleBundle("~/Areas/hogehoge/Content/css").Include(
              "~/Areas/hogehoge/Content/Style.css"
        ));
    
[/code]

先ほど追加した `<link href="@Url.Content`の行を以下の様に変更します。

[code]

    @Styles.Render("~/Areas/hogehoge/Content/css")
    
[/code]

スタイルを追加した場合はBundles.AddのIncludeの引数を増やしてください。  
（すでにあると思われる`bundles.Add(new StyleBundle("~/Content/css").`が参考になると思います）

## 補足

ちなみに`BundleTable.Bundles.ResolveBundleUrl(`に関してもたとえば

[code]

    <!--
       @System.Web.Optimization.BundleTable.Bundles.ResolveBundleUrl("~/Areas/hogehoge/Content/css") 
    -->
    
[/code]

としておくとHTMLは以下の様に出力されますので

[code]

    <!--
        /Areas/hogehoge/Content/css?v=yhOQn7MXW55kWVM6x07Bf3QlCaPBa716IIGs-NlMwiA1 
    -->
    
[/code]

きちんと対象のURLが取れると思います。


CC BY-SA 3.0
2014-12-06T00:54:43.577
389
2014-12-06T02:59:35.893
2014-12-06T02:59:35.893
728
728
373
answer