6

別のレイアウト/cssなどを使用したいWebサイトの別のセクション(ルート)があります。

したがって、私のWebサイトのメインセクションにいるユーザーは、デフォルトのレイアウトを取得します。しかし、彼らがログインしてストアに行くとき、ストアセクション(ルート)は異なるレイアウト/cssを使用します。

それで...

  • www.blahblahblah.com/
  • www.blahblahblah.com/admin/
  • www.blahblahblah.com/home/contactus/

...すべてデフォルトの_Layoutを使用します

しかし...

  • www.blahblahblah.com/store/
  • www.blahblahblah.com/store/admin/

..._LayoutStoreを使用

私はこれがここ(http://forums.asp.net/t/1653362.aspx/1)とここ(MVC 3で複数のレイアウトを使用する方法?)の役割に基づいて行われるのを見てきましたが、私はしたくありませんそれを行う。顧客がどのルートをたどるかに基づいてレイアウトを選択する必要があります(別名、顧客が内部にいるビュー)。

よろしくお願いします。

4

1 に答える 1

13

_ViewStart.cshtml特定のビュー フォルダ内でファイルを使用する方法を検討しましたか?

それがまさにあなたが探しているものではなく、使用するレイアウトを決定するルーティングの値が必要な場合は、使用するレイアウトを返すヘルパー メソッドを作成してみてください。

    public static class LayoutHelper
    {
        public static string GetLayout(RouteData data, string defaultLayout = "")
        {
            if (data.Values["action"] == "edit")
                return "~/views/shared/_AdminLayout.cshtml";

            return defaultLayout;
        }
    }

次に、ビューから次のように呼び出すことができます。

@{
    Layout = LayoutHelper.GetLayout(
        Request.RequestContext.RouteData,
        "~/views/shared/_layout.cshtml");
}

しかし、店舗のレイアウトを含むフォルダーに_ViewStart.cshtmlファイルを作成すれば、うまくいくように思えます。Views/Store

于 2012-08-24T18:31:42.943 に答える