.NETコアMVC起動シーケンスと主部材4-MVC

MVC以前の章では、すでにソースコードとしてうまくやって説明するのプロセスを開始している、章では、正式にMVC、MVCフルネームは、モデルビューコントローラは、プレゼンテーション層が3層、キャプションの公式ウェブサイトに細分化されています。

 

デフォルトでは、.NETのコアのWebプロジェクトを作成し、起動時には、この中に以下のコードを入力します

パブリッククラススタートアップ
    { 
        ます。public void ConfigureServices(IServiceCollectionサービス)
        { 
          
            services.AddMvc(); 
        } 

        公共ボイド設定(IApplicationBuilderアプリ、Microsoft.AspNetCore.Hosting.IHostingEnvironment環境)
        { 
            IF(environment.IsDevelopment())
            { 
                app.UseDeveloperExceptionPage()。
            } 
            app.UseMvcWithDefaultRoute()。
        } 
    }

 我々のような、コアMVCはモデル契約に基づいています.NET:コントローラは(もちろん、これは必要ありません)コントローラ]フォルダにある、我々は合意のコントローラーについて話すすべての最初のページまたはフォルダ中等度ビュー、ビュー、かかわらず、最初の例を除いて、我々は最初のクラスを継承するMicrosoft.AspNetCore.Mvc.Controllerにコントローラを定義する必要があり、どの次の条件のいずれかが必要です。

1、コントローラで終わるクラス名の接尾辞

     たとえば:ホームクラスを作成し、その署名は次のようになります。パブリッククラスにHomeControllerを:コントローラ

2、コントローラ名の接尾辞を継承する基底クラスと、

    たとえば:あなたはBaseController基本クラスを作成し、そして今、その後、彼の署名がそうすることができホームカテゴリを作成する必要がいる:パブリッククラスホーム:BaseController

3、[コントローラ]タブを使用して、このクラス

     たとえば:ホームクラスを作成し、その署名は次のようになります。

      [コントローラ]

      パブリッククラスホーム:コントローラ

内部に書かれたコントローラクラスのメソッドでは、我々はそのようなアクションのインデックスを作成し、以下のようなアクションを呼び出し、戻り値の型が実現例IActionResultインターフェイスで、ここではビューの戻りがあります

  

パブリッククラスにHomeController:コントローラ
    { 
        
        公共IActionResult指数()
        { 
            (ビューを返します)。
        } 
       
    }

ここでは、この事をしたものを最終的に表示()メソッドについて話すと、私たちは、ソースコードに行くように、最終的なビューがするViewResultの作成は、彼らはのActionResultに継承し、IActionResultインタフェースを実装することを、このクラスで最もの一つで見ることができますメインExecuteResultAsyncの方法は、ビュー名がコントローラの名前がアクションに合意され、その後合格していない場合は、このクラスは、我々は、ビューのデータ名の意見やニーズを表現する、2つの正規、VIEWNAMEとのViewDataを持って、我々のデータの先頭に戻るにするViewResultです正確な、そうでない場合は勝つ名は、それが入ってくるデータへの内部アクセスを考慮してのViewDataモデルプロパティに渡すことができた場合、合格、と強く型付けされたように変換、上記の例に関して、我々はビューのフォルダに作成されていますホームIndex.cshtmlビューのファイルとフォルダ、および2つのエンティティモデルフォルダ、ビューモデルの一般的なの一つを作成し、以下のように、コードは次のとおりです。

パブリッククラスのViewModel <T>ここで、T:クラス
    { 
        公共の文字列のタイトル{取得します。セット; } 
        公共のIEnumerable <T>データ{得ます。セット; } 
    }

  別の具体的なアクションは、次のようにデータの実体、IndexModelの名前、特定のコードを表示するために必要です。

パブリッククラスIndexModel 
    { 
        公共のint Idを{取得します。セット; } 
        パブリック文字列名{得ます。セット; } 
        パブリック文字列説明{得ます。セット; } 
    }

 また、当社はConfigureServicesスタートアップクラスのフロントservices.AddScoped <HomeService>()メソッドと一緒にHomeService題しデータ取得サービスインデックスを、書き込み、および;

最初にかかわらず、我々は他のエンティティのインスタンスHomeServiceを注入できるよう後に行うかどうかを設計仕様、の、私たちは、コードは次のように見えるかもしれHomeService:

パブリッククラスHomeService 
    { 
        プライベートのIEnumerable <IndexModel> _sourceData =新しいリスト<IndexModel> 
        { 
            新しいIndexModel {ID = 1、= "私はCODE1される"説明、名前= "TEST1"}、
             新しいIndexModel {ID = 2、説明=「私のCODE2"される、NAME = "TEST2"}、
              新しいIndexModel {ID = 3、説明= "私はCODE3れる"、NAME = "TEST3"}、
               新しいIndexModel {ID = 4、説明=は"私が" code4され、NAME = "TEST4"}、
                新しいIndexModel {ID = 5、説明= "私はCODE5れる"、NAME = "TEST5"} 
        }。
        公共のViewModel <IndexModel>
            { 
                データ= ID> 0?_sourceData.Where(X => x.Id == ID):_sourceData 
            }。
        } 
    }

 今回は、この中にHomeControllerコード

 

パブリッククラスにHomeController:コントローラ
    { 
        プライベート読み取り専用HomeServiceの_service。

        公的にHomeController(HomeServiceサービス)
        { 
            _service =サービス。
        } 

        公共IActionResultインデックス()
        { 
            VARデータ= _service.GetData()。
            ビュー(データ)を返します。
        } 
       
    }

 そして、次のようにコードを表示する、ファイルを表示するために行きます:

@modelのViewModel <IndexModel>。
@ { 
    ViewDataを[ "タイトル"] = Model.Title。
} 
<UL> 
    @foreach(Model.DataにおけるVARアイテム)
    { 
        <LI> 
            <スパン>名称:item.Name @ </スパン> 
            の<span>说明:item.Description </スパン> @ 
            <ASP-ACTION = "詳細" ASP-ルートID = "@ item.Id">详细</a>の
        </ LI> 
    } 
</ UL>

 注目に値するを有するコードの観点から

<a asp-action="details" asp-route-id="@item.Id"> </a>の細部
この改善は、それが.NETコアによって解析されTagHelpers、最終的になると呼ばれ、.NETのコア部分でありますsrc属性や他のHTML属性通常、そうすることの利点は、プログラム自体をHTMLに近い、され
、ここでは、現在のビューの詳細にそのコントローラのメソッドを示すために定義されたASP-アクション=「詳細」を気づきました、URLのパスは/ home /詳細ID = {IDであり、最終的に得られる } ,?
次のように適切に実行できるように、我々は、詳細方法を作成する必要があります。
   公共IActionResult詳細(int型のID)
        { 
            VARデータ= _service.GetData(ID)。
 data.Title =「詳細」。 ビュー(データ)を返します。 }

  次のように創造のビューファイルの詳細では、コードは次のとおりです。

@modelビューモデル<IndexModel> 
{@ 
    ViewDataを[ "タイトル"] = Model.Title。
    VARデータ= Model.Data.FirstOrDefault()。
} 

    <P> @ data.Name、@ data.Description、@ data.Id </ P>

  その後、我々はプログラムを実行するには、次のインタフェースが表示されます。

「詳細」をクリックすると、以下の画面が表示されます。

まあ、MVC一般的な状況では、バックが同様に詳細にこのフォルダ内のルールビューのいくつかを説明します、ここでは説明を参照して公式サイトに行くことができます興味を持っているhttps://docs.microsoft.com/zh-cn/aspnetを/core/razor-pages/?view=aspnetcore-2.2&tabs=visual-studio

おすすめ

転載: www.cnblogs.com/lvshunbin/p/11113487.html