2012-03-02 6 views
0

私のWebページのテーマをユーザーが選択して変更したい MVC3を使用しています。 私の考えは、Contentフォルダの中にいろいろなスタイルシートを入れて、_layout.cshtmlファイルでどのCSSファイルをユーザが選択するかを決めることです。 現在、すべてのページに反映されている単一のタグを含めることができます。 ビューを同じにしたいが、スタイルシートは選択時に変更する必要があります。mvc3でテーマを動的に変更する方法

私は_Layout.cshtmlの内側に、このコードを試してみました:

<script type="text/javascript"> 
    function loadjscssfile(filename) { 
     var fileref = document.createElement("link") 
     fileref.setAttribute("rel", "stylesheet") 
     fileref.setAttribute("type", "text/css") 
     fileref.setAttribute("href", filename) 
    } 
    if (typeof fileref != "undefined") 
     document.getElementsByTagName("head")[0].appendChild(fileref) 

インサイドボディタグ:

<select> 
     <option onclick="loadjscssfile("@Url.Content("~/Content/Site1.css")")">Theme1</option> 
     <option onclick="loadjscssfile("@Url.Content("~/Content/Site2.css")")">Theme2</option> 
     </select> 

しかし、これはまた、動作しません:( me.IがMVC3に新しいです助けてください。 ..

答えて

1

各セレクタに異なるスタイルを追加します。

ASP.NET MVC Theme Supported Razor View Engine

をUPDATE: このサンプルではないでしょうmvc3でコンパイルします。

ViewModel.Title -> ViewBag.Title 
ViewModel.Message -> ViewBag.Message 
ViewModel.PasswordLength -> ViewBag.PasswordLength 

return new ViewEngineResult(CreateView(controllerContext, viewPath, masterPath), this, incompletMatch); -> return new ViewEngineResult(CreateView(controllerContext, viewPath, masterPath), this); 
+0

こんにちは、私はすでにこのリンクを通過して、zipファイル全体をダウンロードしましたが、一度実行するとエラーが表示されます:ViewModelは現在のコンテキストには存在せず、ViewModelsについてはわかりません – EqEdi

+1

もっと強力なテーマが必要な場合私のCavemanTools Mvcツールキット(ナゲットそれ)を試すこともできます。テーマの使い方はこちらhttps://bitbucket.org/sapiensworks/caveman-tools/wiki/Themes – MikeSW

+0

答えが更新されました。編集後、MVC3を使用しているマシン上でコンパイルして動作します。 – Iridio

0

あなたが1つのスタイルシートを保持し、あなたのボディタグにのみクラスを変更すればよいと思います。

<body class="red|blue"> 
    //your content 
</body> 

とスタイルシートの内側にのみ、この記事はあなたを助けるべき

.red{ 
    background-color: red; 
} 

.blue{ 
    background-color: blue; 
} 
+0

返信ありがとうございます。しかし、どうやって色を動的に変更する必要がありますか?コントローラー内にいくつかのスイッチロジックを含める必要がありますか? – EqEdi

関連する問題