1

初めてのエンタープライズASP.NET MVC 4 Web アプリケーションを構築しようとしていますが、正しいフローを理解するのにいくつか問題があります。

対応する ClientsController の base class を持つビュー Clients.cshtml があるとしますController

クライアント ビューに、システム内のすべてのクライアントのリストを表示したいと考えています。

関心の分離のため、そのようなリクエストを処理する正しい場所は、それ自体でApiControllerはなく、Controller多かれ少なかれ UI タスクに制限されるべきであると私は信じています。そのため、すべてのクライアントを含む JSON オブジェクトを返すメソッドを に追加しgetClients()ます。ApiController

さて、これを私のビュー、または私のController. 方法は、JavaScriptを使用して処理することだと思います。ApiControllerビューが読み込まれると、 usingなどを呼び出し、jQuery結果を非同期に表示します。

しかし、これが正しいアプローチであるかどうかはわかりませんね。私はそれが1つのアプローチだと信じていますが、代替案、またはこれを処理するためのより良い(より従来の)方法を知りたいです。

ありがとうございました

4

2 に答える 2

2

他の Web アプリやモバイル アプリでその API を使用しない場合は、Web API を開発する必要はありません。Web API は、複数のコンシューマー (Android アプリ、iOS、Web アプリ、さらにはカスタムのサード パーティ コンシューマーなど) に対して単一のコアを持つ簡単な方法となることを目的としています。

したがって、アプリがそのように使用されない場合は、API コントローラーを使用する必要はありません。

懸念事項を分離したい場合は、同じソリューションで別のプロジェクト (クラス ライブラリ プロジェクト) を作成することをお勧めします。そのプロジェクトは内部 API になります。次に、MVC プロジェクトは内部 API を消費し、コントローラーを可能な限りスキンに保とうとします。この記事を読むことをお勧めします(これは Ruby on Rails 向けですが、すべての概念は MVC .NET に適用されます)。

于 2012-12-05T23:07:38.923 に答える
0

あなたが探しているのは、同じデータをビュー (サーバー側レンダリング) と JavaScript (JSON API 経由) の両方に表示する方法のようです。

これには複数の方法があります。あなたが言及したように、別の API コントローラーを作成することもできますが、私の経験では、少数の API 呼び出しを超えると、これは少し臭いです。理想的には、API に通常のコントローラーと同じ RESTful アーキテクチャーを持たせる必要があります。つまり、オブジェクトの追加、一覧表示、および削除に対して同じロジックを何度も繰り返すことになります。

私が見つけた良い代替案は、リクエストの形式に応じて、各コントローラーがビューまたは JSON を返すことを許可することです。これは、XML、CSV、またはクライアントから使用したいその他の形式を含むように拡張できます。このアプローチについては、 Michael Mortonによる優れたブログ投稿があります。探しているものとは異なる場合がありますが、最終的な結果は次のようになります。

public ActionResult Index()
{
    List<Client> clients = db.Clients.ToList();
    return RespondTo(format =>
    {
        format.Html = () => View(clients);
        format.Json = () => Json(clients);
    });
}
于 2013-01-08T22:22:00.890 に答える