でASP.NET CoreMVCコントローラ

ASP.NET MVCコア内のコントローラ

このセクションでは、コントローラがあり、何でASP.NET MVCのコアにおけるその役割について説明します。

フィドラー

あなたは、早期のためのツールが必要https://www.telerik.com/fiddler

フィドラーは、お使いのコンピュータとインターネットの間のすべての通信のhttp記録し、調べることができ、プロキシhttpプロトコルのデバッグツールであるブレークポイントを設定するなどフィドラー(参照クッキー、HTML、JS、CSSファイル、「外」のすべてのビューのデータ)。それだけでなく、露出のhttpニュースレターもユーザーフレンドリーなフォーマットを提供するため、他よりもフィドラーのWebデバッガは、よりシンプルなものにします。

当社は、取得要求をキャプチャする方法を、彼によって表示されます。

コントローラ

20 1

  • MVCコントローラから継承するクラスでありますMicrosoft.AspNetCore.Mvc.Controller
  • **「コントローラ」のためのコントローラクラス名の接尾辞**。例にHomeController、StudentControllerください。
  • ブラウザからの要求が着信HTTP要求を処理し、ユーザのアクションに応答しますMVCコントローラ、のように、私たちのアプリケーションに到達するとき。
  • Controllerクラスは、publicメソッドのセットが含まれています。これらのメソッドのコントローラクラスは共通と呼ばれる操作の方法(アクション・メソッド)。これは、これらのコントローラの操作が着信HTTP要求を処理しています。
  • ブラウザのアドレスバーにユーザーを仮定し、以下のURLを入力してEnterキーを押しますhttp://localhost:12345/home/details
  • URLは、"/home/details”「詳細」の操作にHomeControllerの一般的な方法にマッピングされました。このマッピングは、当社のアプリケーションであるルーティングルール定義しました。
  • 私たちは、ビデオの今後のリリースでより詳細にASP.NET MVCのコアのルートを説明します。
  • 要求が到着するコントローラの動作方法。要求の処理の一部として、コントローラは、作成モデル-モデル
  • コントローラに依存するサービスは、モデルデータを照会します。
  • たとえば、私たちは、あなたがにHomeController依存必要、学生がデータを照会したいIStudentRepositoryのサービスを。
  • IStudentRepositoryサービスは、コンストラクタ・インジェクションにHomeControllerを使用しています。これは、依存性注入と呼ばれています。
  • 私たちの以前にASP.NETコアチュートリアル議論**ビデオ[DI] **
  • 我々はに割り当てられた依存関係を注入しますのでご注意ください読み取り専用フィールドを。それは偶然の方法で別の値を割り当てる防ぐため、これは良い習慣です。
  • コントローラは、このような、我々はサービスやRESTfulなAPIを提供しているように、必要なデータモデルを持っている場合、それは単にモデルデータを返すことができます。

コントローラは、JSONデータを返します

次の例では、JSONデータを返します。詳細()メソッドの戻り値の型は次のように設定され、注意してくださいするJsonResult我々は明示的な戻りJSONデータを持っているので、。この場合には、詳細()メソッドは常にJSONデータを返します。これは、コンテンツネゴシエーションを受け入れ、無視しないヘッダーを受け入れます

  public class HomeController:Controller
    {
        private readonly IStudentRepository _studentRepository;
        public HomeController(IStudentRepository studentRepository)
        {
            _studentRepository = studentRepository;
        }
        public JsonResult Details()
        {
            Student model = _studentRepository.GetStudent(1);
            return Json(model);

        }
    }

コントローラ戻ったObjectResult

次の例では、** **ヘッダーを受け入れるコンテンツネゴシエーションビューリクエストヘッダに続くそれが設定されている場合は、アプリケーション/ XML、XMLデータが返されます。Acceptヘッダーに設定されている場合は、アプリケーション/ JSONファイル、JSONデータが返されます。

public class HomeController:Controller
    {
        private readonly IStudentRepository _studentRepository;
        public HomeController(IStudentRepository studentRepository)
        {
            _studentRepository = studentRepository;
        }
       public ObjectResult Details()
        {
            Student model = _studentRepository.GetStudent(1);
            return new ObjectResult(model);

        }
    }

ご注意:XML形式のデータを返すことができるようにするために、我々は()メソッドAddXmlSerializerFormatters()メソッドStartup.csファイルConfigureServicesを呼び出す必要があります。

public void ConfigureServices(IServiceCollection services)
{
    services.AddMvc().AddXmlSerializerFormatters();
}

コントローラは、ビューを返します。

次の例では、ビューを返します。私たちがするViewResultを表示するために戻ったときの方法の詳細の戻り値の型を設定することに注意してください。

public class HomeController:Controller
    {
        private readonly IStudentRepository _studentRepository;
        public HomeController(IStudentRepository studentRepository)
        {
            _studentRepository = studentRepository;
        }
          public ViewResult Details()
        {
            Student model = _studentRepository.GetStudent(1);
            return   View(model);
        }
    }

私たちは、アプリケーションを実行してに移動した場合、この時点で、http://localhost:49119/home/details我々は次のエラーを取得します。私たちは、所望のビューファイルを作成していない:ためです。MVCは、私たちが次のビデオで説明します図です。

InvalidOperationException: The view 'Details' was not found. The following locations were searched: /Views/Home/Details.cshtml /Views/Shared/Details.cshtml /Pages/Shared/Details.cshtml

要約:

  • ブラウザからの要求が着信HTTP要求を処理し、ユーザのアクションに応答しますMVCコントローラ、のように、私たちのアプリケーションに到達するとき。
  • コントローラモデルの構築(モデル)
  • 私たちはAPIを構築している場合は、モデルデータを呼び出し元に返されます
  • または「ビュービュー」およびビューにモデルデータを選択し、HTMLデータを生成するために必要なビューが表示されます


同様の考えている場合:個人的なマイクロ・シグナルを追加へようこそ。

私だけでなく、あなたのための最新のブログをお勧めします、公共の数字の関心を歓迎し、あなたとリソースを待っているより多くの驚きがあります!一緒に、共通の進歩を学びます!

 

おすすめ

転載: www.cnblogs.com/cool2feel/p/11457274.html