1

新しいサイトのコントローラーをセットアップする方法についてアドバイスが欲しいです。

このサイトには複数の場所にライブラリがあり、各ライブラリには書籍のセットがあります。

URL 構造は次のようになります。

/図書館名/書籍/書籍名

本には、カテゴリまたはジャンルがある場合もあります。

/図書館名/カテゴリー/書籍/書籍名

私の質問は、ライブラリの追加/削除、および本の追加と削除のすべてのロジックを備えたライブラリコントローラーだけを作成する必要があるかどうかです。

または、ライブラリ コントローラとブック コントローラを作成する必要がありますか? その場合、本が特定の図書館に「関連付けられている」ことを確認するにはどうすればよいですか?

簡単な質問で申し訳ありませんが、メインのチュートリアルには、このようなネストされたルートがあるようには見えません。

ありがとう、ロビー

4

3 に答える 3

2

エリアをチェックしてください。

複数のコントローラーでコードを繰り返す場合は、 DRY原則に従うことができるように、そのコード用に個別のクラスとメソッドを作成することを検討してください。

于 2013-04-29T11:11:53.750 に答える
2

複数の物理的に離れたライブラリを使用している場合、LibraryName (おそらく) は理にかなっています (ただし、いくつかの明らかな場所の問題が発生します)。

注意してください、おそらくこの方法でルーティング地獄にぶつかり始めるでしょうが、それは不可能ではないので、最初にあなたの構造を調査して定義します.

おそらく、次の URI 構造のようなものを使用したほうがよいでしょう。

/libraries/{LibraryName}/books/

libraryName 内の本のリストを取得する

/libraries/{LibraryName}/books/{BookISBN}

ISBN番号で本を入手する

/libraries/{LibraryName}/books?category=somecategory

特定のカテゴリの本のリストを取得する

ルートの例:

    routes.MapRoute(
        name: "LibraryBooks",
        url: "libraries/{id}/books",
        defaults: new { controller = "Libraries", action = "GetBooks" }
    );

そして、それは LibrariesController のメソッドです:

    public IEnumerable<IBook> GetBooks(string id)
    {
        return new IBook[] { new Book(), new Book() };
    }
于 2013-04-29T11:35:52.977 に答える