ASPについて話します.NET Core MVC設計におけるControllerとAction設計仕様
4824 ワード
ドアを開けて山を見て、ControllerとActionとは何ですか?
Controllerはアクションのセットを定義したクラスです.Actionは、Controller内でHTTPリクエストを処理するための方法である.HTTPリクエストは、URLルーティングによりControllerの特定のアクションにマッピングされる.Actionの戻り結果は、一般的に2つに分けられます.
コントローラの設計仕様
コントローラを設計するには、いくつかの制約と仕様に従います.制約はより良い設計のためであり、プログラム設計の過程でいくつかの規則を約束することは、異なる設計者が相手の設計構想を理解するのに有利である.
MVCでの制約:クラスをControllerとマークする
クラスは少なくとも以下のいずれかの制約を満たす必要がある、ASP.NET CoreフレームワークはControllerとして認識される:
using Microsoft.AspNetCore.Mvc;
namespace App.Controllers
{
// Controller 1: the class name is suffixed with "Controller"
public class ProductController
{
// Actions
}
// Controller 2: the class inherits from a class whose name is or is suffixed with "Controller"
public class Product : Controller
{
// Actions
}
// Controller 3: the class is decorated with the [Controller] attribute
[Controller]
public class Product
{
// Actions
}
// Controller 4: preferred name
public class ProductController : Controller
{
// Actions
}
}
仕様:コントローラの設計
Controllerを実際のプロジェクトに適用するには、次の仕様に従います.
カリキュラムを参照してくださいBuild Web APIs using ASP.を参照してください.NET ASP.NET Core Web APIプログラムの作成
MVCにおけるアクションデザイン
Controllerでのpublicメソッドは,[NonAction]で表記されている以外はActionである.Actionの主な役割は、ビジネスロジックを処理し、レンダリングされたビュー(HTMLコンテンツ)またはリダイレクトに戻ることです.設計仕様があまりありません.以下、製品名別に製品を検索する例を示します.
次の例を見てください.この名前の製品を検索すると、フィルタリングされてレンダリングされ、検索されないとすべての製品が表示されます.
public class ProductController : Controller
{
public DatabaseContext dbContext { get; set; }
public IActionResult GetProductsByName(string name)
{
IList products = null;
if(String.IsNullOrWhiteSpace(name))
{
products = dbContext.GetAllProducts();
}
else
{
products = dbContext.GetProductsByName(name);
}
return RedirectToAction("Index", products);
}
public IActionResult Index(IList products)
{
return View(products);
}
}
アクションの戻り値
理論的にアクションメソッドは任意の戻り値を返すことができる
public class SampleController
{
public string SayHello()
{
return "Hello, ASP.NET Core!";
}
public double Add(double a, double b)
{
return a + b;
}
public IActionResult CylinderVolume(double r, double h)
{
double v = Math.PI * Math.Pow(r, 2) * h;
return new JsonResult(v);
}
}
このSampleControllerを含むWebプログラムがTCP 5000ポート上でHTTP要求を傍受するように動作すると仮定する.
戻り値を明示的にJSONオブジェクトに変換する機能を持つことはASPを意味する.NET Core Webプログラムは、Web APIプログラムとしても使用できます.しかし、このようにすると複雑さが増すだけで、プロジェクトではそれらを分けるべきだ.
だからJsonResult以外によくあるASP.NET Core Webプログラムのアクションは、基本的にIActionResultタイプの値を返します.
C#プログラマーとして、「IActionResultはインタフェースです.実装クラスを覚えて、戻る操作のインスタンスを作成する必要がありますか?」と聞くかもしれません.答えはいらない.ほとんどのActionは最終的に2つのことしかしないため、ビューをレンダリングするか、別のActionにリダイレクトするか、この2つの操作はMicrosoftで行われる.AspNetCore.Mvc.Controllerでは既に実現されており,それぞれViewとRedirectToActionである.
重点を置く:
要するに、Actionメソッドの最後の文は、基本的に
return View(/*...*/)
またはreturn RedirectToAction(/*...*/)
である.記事は次のとおりです.https://www.yuque.com/yuejiangliu/dotnet/controllers-and-actions