ASP.NET Core MVC(2)コントローラ


Controllerを認識する方法:
asp.Netcore mvcはURLによって要求中のコントローラを識別し、デフォルトURLルーティングロジックは/[Controller]/[ActionName]/[Parameters]デフォルトURLのルーティングフォーマットがプロジェクト中のStartupである.csには定義があり、ActionNameはコントローラクラスのメソッドを表します.
app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
});

URLがlocalhost:59191/HelloWorldの場合、HelloWorldControllerクラスへのアクセスに対応するIndexメソッドを示します.URLがlocalhost:59191/HelloWorld/Welcomeの場合、HelloWorldControllerクラスへのアクセスに対応するWelcomeメソッドを示します.
Welcomeメソッドを次のように変更してみました.
public string Welcome(string name, int numTimes = 1)
{
    return HtmlEncoder.Default.Encode($"Hello {name}, NumTimes is: {numTimes}");
}

URLがlocalhost:59191/HelloWorld/Welcomeなら?name=Money&numTimes=10の場合、Moneyは10回表示されます.
MVCのビュー
1 Viewsフォルダを右クリックし、追加>新規フォルダをHelloWorldと名付けます.2 HelloWorldフォルダを右クリックし、「ビュー」を追加し、Indexと名付けると、Indexが生成されます.cshtml、これはRazorビューファイルで、RazorはhtmlのようなC#で書くことができるファイルタイプで、データモデルとビューをバインドして使用するのに便利です.3 Index.cshtmlファイルの内容は以下のように変更されました.
@{
    ViewData["Title"] = "Index";
}

Index

Hello from our View Template!


4 HelloWorldControlのindexメソッドを次のように変更します.
public IActionResult Index()
{
    return View();
}

5このとき、再度実行することができ、localhost:59191/HelloWorldのページがIndexであることがわかる.cshtmlの効果.コントローラ内のIndexメソッドには、1つの文return View()しかありません.ユーザーに返信するためにviewビュータイプを返す必要があることを示します.ここでView()には、どのビューファイルが空であるかは示されていない、asp.NetのMVCは、メソッド名に対応するデフォルトのビュー、すなわちHelloWorldディレクトリの下のindexを使用する.cshtmlファイル.
Views/Shared/_Layout.cshtml
このファイルは、すべてのビューファイルで使用されるテンプレートで、このファイルを変更することで、すべてのビュー共通の部分を変更できます.このファイルを開くと、次の行が表示されます.
    @ViewData["Title"] - Movie App

ViewDataは辞書型の変数で、コントローラやビューで使用できます.この行は、各ページが独自に定義したViewDataのTitleという値を使用することを示しています.これにより、異なるページに基づいて異なる値が表示されます.ここからも、各ビューが先に実行され、共有されたビューが実行されることがわかります.
ViewData
コントローラのデータはどのようにビュー表示に渡されますか?ここで例を見てみましょう.HelloWorldのWelcomeを次のように変更します.2つのパラメータがあります.ViewDataメンバー変数によるMessageとNumTimesの転送
public IActionResult Welcome(string name, int numTimes = 1)
        {
            ViewData["Message"] = "Hello " + name;
            ViewData["NumTimes"] = numTimes;

            return View();
        }

URLでlocalhost:59191/HelloWorld/Welcome?name=Money&numTimes=10の場合、nameとnumTimesはパラメータに自動的にマッピングされます.ここには大文字と小文字の区別がない.Welcomeビューを作成します.コードは次のとおりです.ViewDataでMessageとNumTimesを使用します.@その後、C#構文を使用することを示します.
@{
    ViewData["Title"] = "Welcome";
}

Welcome

    @for (int i = 0; i < (int)ViewData["NumTimes"]; i++) {
  • @ViewData["Message"]
  • }