2

私は、Angular と Web API を一緒に使用することに移行しています。Visual Studio の MVC/Web API テンプレートには、ビューを返す HomeController.cs を指すルート パスがあります。

そのルートパスがAngular htmlファイルを指すようにするにはどうすればよいですか? サーバー側のルーティングの概念はどうにかしてなくす必要がありますか? 私は混乱しており、その MVC/Web API テンプレートから angular を使用するように移行する方法と、テンプレートが作成する余分なファイルをどうするかについての情報が見つかりませんでした..私が理解している限りでは、

  1. VS で Web API テンプレートを作成する
  2. ルート ディレクトリに index.html ページを作成します。このページには、他の angular html ページへの ng ディレクティブが含まれており、それらの一種のマスター ページとして機能します。
  3. 次に、ASP.NET MVC ルーティングを削除して、ファイルを既定のファイルに指定する古い学校の Web フォーム タイプの方法で機能するようにする必要があると思いますか?
4

1 に答える 1

4

ASP.Net MVC、WebApi、および AngularJS の同じスタックを使用しているので、ちょっと試してみましょう。また、SPA を作成していると仮定します。

何よりもまず、Web API を視野に入れないでください。その適用性は、さまざまな形式でデータを送信することに限定されており、ビューの概念はありません。

サーバー側ルーティングと角度ルーティングの両方を使用して、ビューをユーザーに提供できます。実際、それらは互いに補完し合うことができます。

ng-appマスター ページと同様に、angular には宣言のあるメイン ページが必要です。MVC の観点からhome\index.cshtmlは、初期ビュー用にロードできます。このindexページ用に生成されたサーバー サイズ ビューには、ng-appディレクティブとng-viewディレクティブを含めることができます。

ng-viewビューがスワップ\ロードされる主要な領域です。サーバー側のメソッドng-viewと同等として比較できます。Angular を使用する場合は、必ずマスター ページから呼び出しを削除してください。RenderBody はメイン ページをロードするため、削除しません。代わりに、div だけを含むインデックス ページをロードする必要があります。@RenderBody()@RenderBody()ng-view

にロードされた各部分ビューに対してサーバー側ビューを作成しますng-view。たとえば、クライアント上のuserlist.cshtmlルートがクライアント上のルートに変更されたときに読み込まれるビューが存在する可能性が#/usersあります。これらのビューをサーバーからロードするには、 で指定する必要がありますtemplateUrl$routeProvideこのテンプレートの URL は、サーバー ルーティング ( /user/index) によって解決されます。

これらの子ビューを作成する際の注意事項は次のとおりです。

  • マスター ページを継承しないでください。
  • ng-viewしたがって、セクションに挿入する必要があるコンテンツのみを送信する必要があるため、<html>, <body>タグは送信されません。
  • それらには、角度バインディングやその他の角度宣言的なものを含めることができます。

最初のテンプレートが Angular によってロードされると、テンプレートのデータをロードするためにサーバーを再度呼び出す場合があります。ここで、Web API の出番です。like を呼び出すと/api/users、すべてのユーザーに関する json データが返されます。返されたデータは、ビューとデータを結合するために使用できます。

私が自分自身を明確にしたことを願っています。

于 2013-08-28T14:41:25.240 に答える