28

私の質問は明白かもしれませんが、適切に設計された Web アプリケーションを構築したいと考えています。管理領域に関しては、管理者はユーザー、記事、投稿などを一覧表示/作成/削除/変更できる必要があります...

アプリケーションを設計するための最良の方法を知りたいです。これらの項目 (/Users/Create/id または /Posts/Delete/id) ごとにコントローラーを作成するか、管理コントローラー (/Administration/CreateUser/id または /Administration/DeletePost/) ですべてのアクションを作成する必要があります。同上)?

4

8 に答える 8

1

答えは、コントローラーにどれだけの機能があるかによって異なります。1 つのコントローラーから始めて、コントローラーが多すぎる場合はいくつかに分割します。MVC の優れた点は、コントローラーに配置する場所が URL に影響を与える必要がないことです。/Users/Create を UserAdminController クラスなどに非常に簡単にマップできます。

于 2009-05-25T06:58:27.473 に答える
0

このソリューションを使用することをお勧めします。

しかし、定義を次のように変更しました。

    public ThemedViewEngine()
    {
        base.MasterLocationFormats = new string[] {
            "~/Views/{1}/{0}.master", 
            "~/Views/Shared/{0}.master",
            "~/Themes/{2}/Views/{1}/{0}.master", 
            "~/Themes/{2}/Views/Shared/{0}.master",
            "~/Themes/Default/Views/{1}/{0}.master", 
            "~/Themes/Default/Views/Shared/{0}.master"
        };
        base.ViewLocationFormats = new string[] { 
            "~/Views/{1}/{0}.aspx", 
            "~/Views/{1}/{0}.ascx", 
            "~/Views/Shared/{0}.aspx", 
            "~/Views/Shared/{0}.ascx",
            "~/Themes/{2}/Views/{1}/{0}.aspx", 
            "~/Themes/{2}/Views/{1}/{0}.ascx", 
            "~/Themes/{2}/Views/Shared/{0}.aspx", 
            "~/Themes/{2}/Views/Shared/{0}.ascx",
            "~/Themes/Default/Views/{1}/{0}.aspx", 
            "~/Themes/Default/Views/{1}/{0}.ascx", 
            "~/Themes/Default/Views/Shared/{0}.aspx", 
            "~/Themes/Default/Views/Shared/{0}.ascx" 
        };
        base.PartialViewLocationFormats = new string[] {
            "~/Views/{1}/{0}.aspx",
            "~/Views/{1}/{0}.ascx",
            "~/Views/Shared/{0}.aspx",
            "~/Views/Shared/{0}.ascx",
            "~/Themes/{2}/Views/{1}/{0}.aspx",
            "~/Themes/{2}/Views/{1}/{0}.ascx",
            "~/Themes/{2}/Views/Shared/{0}.aspx",
            "~/Themes/{2}/Views/Shared/{0}.ascx",
            "~/Themes/Default/Views/{1}/{0}.aspx",
            "~/Themes/Default/Views/{1}/{0}.ascx",
            "~/Themes/Default/Views/Shared/{0}.aspx",
            "~/Themes/Default/Views/Shared/{0}.ascx"
        };
    }

デフォルトのテーマはデフォルトであるため、存在する必要があります。

ディレクトリの構造は次のようになります。

  • コンテンツ
  • テーマ
    • デフォルト
      • コンテンツ
      • ビュー
        • ブログ
        • 皮をむくべきものは何でも
    • その他のテーマ
      • コンテンツ
      • ビュー
        • ブログ
        • 皮をむくべきものは何でも
  • ビュー
    • 記事
    • 投稿
    • ユーザー
    • 設定
    • その他の管理スタッフ
于 2009-08-11T15:18:54.057 に答える
0

これが私の質問をする別の方法です。

私のマスターページの一部:

<% if (!String.Equals(ViewContext.RequestContext.RouteData.GetRequiredString("controller"), "Administration")) { %>
<div>
    <!-- Some Code -->
</div> <% } %>

ご覧のとおり、私のマスター ページでは、ユーザーが管理領域で作業しているかどうかに応じて、ページの一部を表示したいと考えています。管理コントローラー (/Administration/CreateUser/id) のみでかなりうまく機能します... しかし、ユーザーまたは記事 (/User/DeleteUser/id または /Article/Details/id) として別のコントローラーを使用すると、大きな混乱が生じます。 .

エンティティごとに 1 つのコントローラーを使用したいのですが、このアプローチを複数のコントローラーに結合する方法が見つかりません。

于 2009-05-25T08:59:27.777 に答える
0

それはあなたの管理領域のスケール サイズに依存します。

  • 独立して管理したいエンティティの数を検討してください。
  • それぞれがいくつのアクションを持つかを考えて、
  • アプリケーションと管理領域 (ユーザー アクセス、ユーザー フレンドリな URL の場合) の間に依存関係があるかどうかを確認します。

次に、1 つの管理コントローラー、エンティティ コントローラーでの管理アクション、または大規模な機能アプリケーションの場合の新しい管理プロジェクトの定義など、どのアプローチが役立つかを指定できます。

*プロジェクトの規模が急速に拡大しており、すぐに大規模な規模が必要になる場合は、3 つ目のプロジェクトを選択します。つまり、新しい管理者 mvc プロジェクトを作成します。

決めるのに役立つことを願っています。

于 2013-07-08T06:41:14.873 に答える
0

これにはDynamicDataを使用できます。MVC ではありませんが、一緒に使用でき、セットアップと使用が非常に簡単です。

于 2009-05-25T06:57:30.907 に答える