ASP.NETコアMVCアプリケーションにコントローラを追加

モデル-ビュー-コントローラ(MVC) 3つの主要コンポーネントにアーキテクチャパターンアプリケーション:モデル(M)、ビュー(V)と、コントローラ(C)。 MVCパターンは、従来の一体型のアプリケーションよりも、テストを簡単に作成し、更新アプリケーションに役立ちます。 MVCベースのアプリケーションが含まれます:

  • モデル(M)は:アプリケーションデータの種類を示します。 検証ロジックモデルクラスは、データへのビジネスルールを施行するために使用します。 典型的には、オブジェクトモデルの検索モデルと状態データベースに格納されています。 このチュートリアルでは、Movie データベースからのモデルは、動画データ、及びそれを表示したり、それを更新するための物資を取得します。 更新されたデータがデータベースに書き込まれます。

  • ビュー(V)は:のコンポーネント・アプリケーション・ユーザ・インターフェース(UI)を示す図です。 このUIは通常、モデルデータを表示されています。

  • コントローラ(C):治療クラスブラウザ要求。 彼らは、取得するために戻り、ビューデータモデルテンプレート応答を呼び出します。 ユーザ入力と対話するために、コントローラプロセスおよび応答、MVCアプリケーションビュー表示情報のみです。 例えば、コントローラは、データとクエリ文字列値のルーティングを処理し、モデルにこれらの値を渡します。 モデルは、データベースを照会するために、これらの値を使用することができます。 例えば、https://localhost:5001/Home/Privacy との  Homeデータ(コントローラ)及びルーティング  Privacy(ホームと呼ばれるコントローラ動作方法)。 https://localhost:5001/Movies/Edit/5 これは、映画フィルム5のコントローラIDで編集するための要求です。 このチュートリアルの次のセクションは、ルーティングデータを記述する。

MVCパターンは、これらの要素間の疎結合を可能にしながら、異なるアプリケーションの特性(入力ロジック、ビジネス・ロジックとUIロジック)を分離するためのアプリケーションを作成するのに役立ちます。 このモードでは、各アプリケーションロジックの場所を指定することができます。 UIロジックはビューです。 コントローラ内に位置する入力ロジック。 ビジネス・モデルに配置されたロジック。 この分離は、コードの他の特性に影響を与えることなく、特性時間処理を実現するために使用することができるので、複雑なアプリケーションを構築する程度を制御するのに役立ちます。 例えば、ビューコード処理を依存することなく、ビジネス・ロジック・コード。

コントローラの追加

  • Visual Studioの
    • 「ソリューションエクスプローラ」で、「コントローラ」を右クリックし、「追加」>「コントローラ」をクリックしてください コンテキストメニュー

    • 「台座を追加」ダイアログボックスで、「MVCコントローラ - 空」を選択

      MVCコントローラを追加し、名前を付け

    • 「空のMVCコントローラの追加」ダイアログボックスで、HelloWorldControllerを入力し、「ADD」を選択します。

  • Visual Studioのコード

    「EXPLORER」のアイコン、[コントロールクリック(右クリック)、「コントローラ」を選択し、「新規ファイル」を選択し、新しいファイルHelloWorldController.csに名前を付けます。

    コンテキストメニュー

  • Mac用のVisual Studio
  • 「ソリューションエクスプローラ」で、>「追加」を選択し、「コントローラ」を右クリックし、「新規ファイルを。」 コンテキストメニュー

    「を選択ASP.NETコア」と「MVCコントローラクラスを。」

    コントローラは、「HelloWorldController」と命名されます。

    MVCコントローラを追加し、名前を付け

「コントローラ/ HelloWorldController.cs」の内容は、以下に置き換えられます。

使用してMicrosoft.AspNetCore.Mvcを。
使用してSystem.Text.Encodings.Webを。
 
名前空間のMvcMovie.Controllers
{
    パブリック クラスHelloWorldController:コントローラ
    {
        // // GET:/ HelloWorldの/ パブリック文字列インデックス()
        
 
         
        {
            返す ...これは私のデフォルトのアクションです
        }
 
        // // GET:/ HelloWorldの/ようこそ/ パブリック文字列へようこそ()
        
 
         
        {
            リターン これは歓迎アクションメソッドです... 
        }
    }
}

コントローラの各  public メソッドは、HTTPエンドポイントコールとして使用することができます。 例では、上記では、両方の方法は、文字列を返します。 以前の各メソッドがコメントしていることに注意してください。

HTTPエンドポイントが(例えば、WebアプリケーションのURL配向されてもよいである  https://localhost:5001/HelloWorld、請求に関連して使用されるプロトコル)  HTTPSネットワークロケーションWebサーバTCPポート  localhost:5001、及びターゲットURI  HelloWorld

記事のコメントはこれがあることを指摘した  HTTP GET  ベースのURLに追加することで、メソッド  /HelloWorld/ の呼び出し。 第二のアノテーションを指定し  たHTTP GET  のURLにそれを追加することによって、メソッドを  /HelloWorld/Welcome/ コール。 このチュートリアルは、後にベースフレーム生成エンジン使用して  HTTP POST データを更新するための方法。

非デバッグモードで実行しているアプリケーション、およびアドレスバーにパスに追加「のHelloWorld」。 Index メソッドは文字列を返します。

インバウンドのMVC URL呼制御クラス(および操作の方法)。 使用MVCのデフォルトとして  ロジックは、ルーティングURLを呼び出すコードを決定するために、次の形式を使用します。

/[Controller]/[ActionName]/[Parameters]

Startup.csファイルに  Configure フォーマットルーティングプロセスを設定します。

app.UseEndpoints(エンドポイント=>
{
    endpoints.MapControllerRoute(
        名前:デフォルト
        パターン:" {コントローラ=ホーム} / {アクション=ランキング} / {ID}?" )。
});

あなたがアプリケーションを参照し、任意のURLのセクションを提供していない場合は、指定されたハイライトの上に「ホーム」コントローラおよび「インデックス」テンプレートラインにデフォルト設定されます。

最初のURLセグメントコントローラクラスを実行することを決めました。 だから、  localhost:{PORT}/HelloWorld コントローラのHelloWorldクラスにマッピングされました。 URLタイプ判定部の第二部分の操作方法。 だから、  localhost:{PORT}/HelloWorld/Index それが引き金となり  HelloWorldController 、クラスの  Index 操作を。 ただ参照するには、注意してください  localhost:{PORT}/HelloWorldながら、  Index この方法は、デフォルトで呼び出されます。 その理由は、ということです  Index 明示的にメソッドの名前を指定しない場合、デフォルトの方法は、それがコントローラに呼び出します。 URLセグメントの3番目の部分は(id)データをルーティングするためのものです。 このチュートリアルの次のセクションは、ルーティングデータを記述する。

閲覧するには  https://localhost:{PORT}/HelloWorld/Welcome。 Welcome 操作の方法とは、文字列を返します  This is the Welcome action method...。 このURLのために、使用して  HelloWorld コントローラと  Welcome 操作の方法を。 現在未使用のURL  [Parameters] の部分。

ブラウザウィンドウのアプリケーションの応答「これは操作ようこそです」を表示

コードは、コントローラからのURL情報にパラメータを変更します。 たとえば  /HelloWorld/Welcome?name=Rick&numtimes=4。 変更  Welcome 方法は次の2つのコードパラメータ表示が含まれています。

// GET:/ HelloWorldの/ようこそ/
 //はSystem.Text.Encodings.Webを使用する必要があります。
公共の 文字列へようこそ(文字列名、int型 numTimes = 1 
{
    リターン HtmlEncoder.Default.Encode($ " こんにちは{名前}、NumTimesは次のとおりです。{numTimes} " );
}

上記のコード:

  • 機能指示を使用してC#のオプションのパラメータではない  numTimes パラメータは、パラメータaのデフォルト値に渡されたとき。
  • 使用する  HtmlEncoder.Default.Encode 悪質な入力(すなわちJavaScriptの)ダメージのアプリケーションを防ぐために。
  • で  $"Hello {name}, NumTimes is: {numTimes}" 使用して文字列内の補間を

アプリケーションを実行し、を参照します。

https://localhost:{PORT}/HelloWorld/Welcome?name=Rick&numtimes=4

(するために、  {PORT} ポート番号に置き換え。)URLであると  name し、  numtimes 他の値。 MVCの  モデルバインディングシステムは自動的にアドレスバーにクエリ文字列からパラメータメソッドパラメータの名前マッピングすることができます。 詳細については、を参照してください結合モデル

こんにちはリックブラウザウィンドウ表示アプリケーションの応答、NumTimes:4

図中、未使用セグメントURL( Parameters)、およびクエリ文字列で渡さ  name および  numTimes パラメータ。 URLの上に  ?区切り文字として(疑問符)、クエリ文字列が続きます。 & 文字フィールド/値のペアを分離しました。

Welcome 次のコードでの方法:

公共の 文字列へようこそ(文字列名、int型 ID = 1 
{
    リターン HtmlEncoder.Default.Encode($ " こんにちは{名前}、ID:{ID} " );
}

アプリケーションを実行し、以下のURLを入力します。https://localhost:{PORT}/HelloWorld/Welcome/3?name=Rick

このとき、第3のセグメントのURLルーティングパラメータが  id 一致します。 Welcome 方法としては、  MapControllerRoute メソッドのURLテンプレートに一致するパラメータを  id。 その後、  ?id? )を表す  id オプションのパラメータを。

app.UseEndpoints(エンドポイント=>
{
    endpoints.MapControllerRoute(
        名前:デフォルト
        パターン:" {コントローラ=ホーム} / {アクション=ランキング} / {ID}?" )。
});

上記の例では、MVCコントローラの実装では、常に「VC」セクション、すなわち、ビューおよびコントローラの仕事です。 コントローラは、HTMLに直接戻ります。 通常、私は非常に面倒なコーディングとメンテナンスので、HTMLを返すようにコントローラに指示する必要はありません。 一般的に、反応してHTMLテンプレートファイルを生成するために、別のかみそりビューを使用する必要があります。 この操作は、次のチュートリアルで行うことができます。

その他のチュートリアル

ASP.NET MVCのコアアプリケーションにビューを追加

ASP.NET MVCのコアアプリケーションにモデルを追加

 

おすすめ

転載: www.cnblogs.com/puzi0315/p/12550750.html