4

angularjs と MVC5 の間でデータを転送する際に混乱が生じます。シングル ページ アプリケーション (SPA) を作成しています。

  1. angularjsで作業する最良の方法は何ですか? MVC コントローラーですか、それとも MVC API ですか?
  2. ここで、APIがSPAに適していることを読みました。では、API 用に別のプロジェクトをビルドする必要がありますか?
  3. MVC を使用した Angularjs の非同期通信はどうですか?

私は先に進むための正しい方向性を得ていません。私は mvc には精通していますが、API には精通していません。だから、私を正しい道に導いてください!!

前もって感謝します

4

3 に答える 3

4

まず、現在のバージョンの Visual Studio (2013) では、"web フォーム" プロジェクトと "mvc" プロジェクトの区別がありません。あるのは Web アプリケーション プロジェクトだけで、その中には何でも好きなものを入れることができます。

私の経験から、あなたの問題にアプローチするための素晴らしくクリーンな方法は、通常の MVC コントローラーを作成して、angularJS アプリケーションを含むかみそりビューをレンダリングし、ajax メソッドの RESTful インターフェイス用の WebAPI コントローラーを作成することです。

angularJS では、手動で ajax 呼び出しを行う必要はありません。もっと便利で強力な方法があります: リソースです。また、WebAPI コントローラーは単一タイプのオブジェクト (顧客など) と連携し、HTTP VERBS を介して CRUD を実行できるため、WebAPI 設計ともうまく連携します。例えば:

// assume we have a backend repository that handles the data

public HttpResponseMessage Get()
{
    return this.Request.CreateResponse(HttpStatusCode.OK, this.repository.GetAllCustomers()); 
}

public HttpResponseMessage Post(Customer customer)
{
    var modifiedCustomer = this.repository.Update(customer);
    this.repository.SaveChanges();

    return this.Request.CreateResponse(HttpStatusCode.OK, modifiedCustomer);
}

このメソッドは、利用可能なすべての顧客を照会して返します。ここでは、JSON と XML のどちらを返すかを定義しません。WebAPI フレームワークは、WebAPI 要求の HTTP HEADERS を読み取り、クライアントからの要求に応じてデータをシリアル化します。使用する可能性が高い JSON の場合、定義されているデフォルトの JSON シリアライザーを介してシリアル化を行います。これをオーバーライドして、JSON の作成方法を変更できます。一般的な方法は、JSON.NET をカスタム設定で使用することです。

AngularJS リソースは、単一の URL をマップし、内部ですべての動詞を操作して、$save、$query、$get などのメソッドを公開するように作成されているため、非常にうまく結合されます。例えば:

var customerRes =  $resource('/customers');
var currentCustomers = customerRes.query(function(){ // query is mapped to the GET verb
    currentCustomers[0].email = "foo@baz.bar";
    currentCustomers[0].$save(); // default mapped to the POST verb
});

詳細については、ドキュメントとサンプルを確認することをお勧めします。

于 2015-01-09T08:51:26.970 に答える
2

Async と MVC API の両方で MVC コントローラー関数を使用できます。Controller Async メソッドでは、API に多くの機能が組み込まれているため、すべての応答を手動で処理する必要があります。コントローラーの Async メソッドでは、アプリケーションは自己呼び出しを処理します。もちろん、API を使用すると、さまざまな種類のアプリケーションで作業する柔軟性が向上します。

MVC アプリケーションに、モバイル アプリなどのようにさまざまな種類のアプリケーション用の API がある場合は、さらに注意する必要があります。 1. プール サービス。2. IIS のワーカー プロセスあたりのスレッド数。これらは、さまざまなタイプのアプリケーションのアプリケーションに API または Async メソッドがある場合に、アプリケーションのスケールを定義します。

于 2015-01-09T09:22:25.997 に答える
1

1)Simpleを作成できますController-および内部で返されるメソッドを作成しJsonResult 、Angularからそのメソッドを経由して呼び出しますAJAX

2) はい - ビルドが必要な場合API- 新しいプロジェクト タイプを作成する必要がありますWebAPi(現在は v 2.0 です) - ただしsolution、SPAを使用してプロジェクトを作成できます

3) 電話できますajax asynchronous- 問題ありません

于 2015-01-09T08:32:23.280 に答える