質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

Q&A

2回答

12265閲覧

ASP.NET MVC(C#)でstyles.renderが動作しない

punineko

総合スコア11

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

ASP.NET MVC 4

ASP.NET MVC4は、MVCパターンを利用して、高度なテスト機能と保守機能を備えた Web アプリケーションを開発するためのフレームワークです。

0グッド

0クリップ

投稿2018/11/12 00:22

編集2018/12/04 02:51

ローカルのデバック環境ではstyles.renderを実行するとBundleConfigに
設定されているcssが表示されるのですがサーバで実行すると中身が空になってしまいます

設定
bundles.Add(new StyleBundle("/Content/css").Include(
"
/Content/bootstrap.css",
"~/Content/site.css"));

実行
@Styles.Render("~/Content/css")

ローカル

<link href="/Content/bootstrap.css" rel="stylesheet"/> <link href="/Content/site.css" rel="stylesheet"/>

サーバ
表示されない

パスが間違えているなどいろいろ試しましたが
有効にならず困っています。

CSSが有効にならない

上記ですがBundleConfigに下記コードを追加したらlinkは表示されました。

BundleTable.EnableOptimizations = true;

<link href="/Content/css?v=MDbdFKJHBa_ctS5x4He1bMV0_RjRq8jpcIAvPpKiN6U1" rel="stylesheet"/>

linkできているようですが画面上のボタンや文字などCSSが聞いていない状態です。

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2018/11/12 01:19

MVC3 のタグが付いてますがバージョン 3 ではないのでは? ASP.NET MVC にバンドル機能が備わったのはバージョン 4 以降です。MVC のバージョンを確認して、タグが間違っていたら付け直してください。
punineko

2018/11/12 01:22

すいません。MVC4でした。ご指摘ありがとうございます。
退会済みユーザー

退会済みユーザー

2018/12/04 02:59

質問を編集したようですが、どこをどう変えたのか、新たな課題は何かを書かないと分かり難いです。
guest

回答2

0

サーバーでの運用環境でも CSS は開発環境と同様に働いているのでは? であれば、x_x さんが言われるように「デバッグ」だからでしょう。

サーバーでは web.config の設定でデバッグではなくて、バンドル機能が働いていると思います。

以下のようになっているはず。

compilation 要素の debug="true" の場合

<link href="/Content/bootstrap.css" rel="stylesheet"/> <link href="/Content/site.css" rel="stylesheet"/>

compilation 要素の debug="false" の場合

<link href="/Content/css?v=MDbdFKJHBa_ctS5x4He1bMV0_RjRq8jpcIAvPpKiN6U1" rel="stylesheet"/>

【追記】

2018/11/14 10:41 の私のコメントで「後で例を上の回答欄に追記しておきます」と書きましたが、それを以下に書きます。

下の画像は、Visual Studio 2015 の MVC5 のテンプレートが生成したプロジェクトで、web.config の compilation 要素を debug="false" に設定し(CSS はバンドル&ミニファイされる)、_Layout.cshtml の @Styles.Render("~/Content/css") の有無(即ち、bootstrap.css と site.css の有無)による Home/Index ページの表示の違いです。

bootstrap.css と site.css 有り

イメージ説明

bootstrap.css と site.css 無し

イメージ説明

一目瞭然ですよね。質問者さんのケースではどうなってますか?

注:CSS の違いによる表示の違いを調べる際はブラウザのキャッシュを削除するようにしてください。

投稿2018/11/12 01:31

編集2018/11/14 02:04
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

punineko

2018/11/12 01:58

デバッグをtureにしているときと同じ動作にしたい場合はどうしたらよいのでしょうか?
退会済みユーザー

退会済みユーザー

2018/11/12 02:50

その理由は何ですか? それでは MVC4 のバンドル&ミニファイ機能を使う意味がないということは分かってますか?
punineko

2018/11/12 04:03 編集

バンドル&ミニファイ機能を利用して <link href="/Content/css?v=MDbdFKJHBa_ctS5x4He1bMV0_RjRq8jpcIAvPpKiN6U1" rel="stylesheet"/> ととなったのですがCSSが効いていなかったので同じ動きにするには?という意味でした。 パスなど変更して試し中です。
退会済みユーザー

退会済みユーザー

2018/11/12 04:33

質問で、 > サーバーでの運用環境でも CSS は開発環境と同様に働いているのでは? と聞かれているのだからそれに答えましょうよ。答が No であれば、なおさらそうしてくれないと話が通じなくなります。 そもそも「CSSが効いていなかった」というのは間違いないのですか? どうやって確認しましたか? 運用環境のサーバーの web.config で compilation 要素の debug="true" にしてどうなるか確認してみましたか?
punineko

2018/11/13 14:33

すいません。質問に答えておりませんでした。 >サーバーでの運用環境でも CSS は開発環境と同様に働いているのでは? 同様に動いておりません。ヘッダーにCSSが追加されない状態でした。 >運用環境のサーバーの web.config で compilation 要素の debug="true" にしてどうなるか確認してみましたか? debugをtrueにすると運用環境でもローカルと同じCSSが表示されます。 >そもそも「CSSが効いていなかった」というのは間違いないのですか? どうやって確認しましたか? これはボタンがありそのボタンのCSSが適用されているかどうかで判断しました。
退会済みユーザー

退会済みユーザー

2018/11/14 01:41

> debugをtrueにすると運用環境でもローカルと同じCSSが表示されます。 私の回答に書いた「compilation 要素の debug="true" の場合」のようになるのですよね? であれば、 > 同様に動いておりません。ヘッダーにCSSが追加されない状態でした。 ということはあり得ないのですが。何かの見間違い、勘違いでは? 一番怪しいのが、バンドル&ミニファイされた CSS の link 要素がちゃんとレンダリングされているのに、質問者さんが html コードの中から見つけられなかったということなのですが。 私の回答に書いた「compilation 要素の debug="false" の場合」のような link 要素がないか html ソースをよ~く探してください。 > これはボタンがありそのボタンのCSSが適用されているかどうかで判断しました。 その「ボタン」というのが何だかよく分からないのですが。 bootstrap.css と site.css が読み込まれないと、ボタンとか特定の要素を見なくても、ページ全体の表示が全く違ったものになります。一目瞭然なのですが・・・ 後で例を上の回答欄に追記しておきます。
guest

0

パス中の"~"はルート演算子と言って、おまけではないので省略しないでください。

C#

1new StyleBundle("~/Content/css")

で定義したのなら、それを参照しましょう。

cshtml

1<link href="~/Content/css" rel="stylesheet" />

投稿2018/11/12 00:56

x_x

総合スコア13749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

punineko

2018/11/12 01:01

ご回答ありがとうございます。 すいません。 実行部分が省略されていました。 @Styles.Render("~/Content/css") で実行して二つのCSSを出すようにしているんですが ローカルはOK、サーバはNG(出力されない)です。
x_x

2018/11/12 01:10

何か認識が違うようですが、Bundleにより"~/Content/css"を参照させて単一のCSSを返します。二つのCSSが出るわけではありません。 サーバーに元ファイルの2ファイルが配置されていないのでしょうか? その場合は何も出ません。
punineko

2018/11/12 01:19

@Styles.Render("~/Content/css") こちらを実行するとローカルではキチンと登録したCSSが二つ表示されるのですが Bundleでは複数CSSを登録できないということでしょうか?
punineko

2018/11/12 01:58

デバッグだがtrueだったため動作が違ったようです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問