1

私はASP.Net MVC 4アプリケーションを持っています。ユーザーは、ホストされている1ページのサイト(このアプリケーション内)のテーマまたはデザインを選択できます。最初は組み込みの Areas でこれを行うことを考えていましたが、いくつかのアプリケーションの制限により、その方法を使用しないことにしました。私が考えた方法 (これまでのところうまくいきます) は、ユーザーをコントローラーのインデックス アクションに送り、そこでユーザーが選択したテーマを見つけてから、適切なビューを返すことです。このように、URL は次のように単純である必要があるため、URL にアクション名がありませんabc.com/cb/websiteID。ところで、すべてのテーマ/デザインには、フォルダー内に 1 つのビューがあります。

何らかの理由で、この方法は私には合いません。これを行うためのより良い方法があるはずです。これに落ち度はありますか?この方法は悪い習慣ですか?より良い方法はありますか?

詳細を省略した場合はお知らせください。できる限り対応いたします。

4

1 に答える 1

3

ユーザーが選択できるテーマのセットは限られていますか? もしそうなら、代わりにテーマごとのレイアウトを持ち、単一のビューを持ち、パラメータに基づいてレイアウトを動的に切り替えることを検討します...

//in your controller
public ActionResult(int id) {
    string layoutForThemeName = SomeService.GetThemeForUser(id);
    ViewBag.LayoutName = layoutForThemeName 
}

// in your view Index.cshtml
@{
    Layout = ViewBag.LayoutName;
}

Razor では、あるレイアウトを別のレイアウトから継承できることを忘れないでください。そのため、スクリプト参照などを使用してベース レイアウトを作成したり、すべてのテーマのレイアウトを作成したりできます。

于 2013-06-08T11:14:38.070 に答える