ASP.NET Core MVCのIActionFilter.OnActionExecutingメソッドでは、ControllerのActionメソッドのパラメータ値を取得できます...

4684 ワード

ASPを使ったことがあります.NET Core MVCのIActionFilterブロッキングの開発者は、非常に強力なMVCブロッキングであることを知っています.IActionFilterのOnActionExecutionメソッドが最近発見され,ControllerのActionメソッドパラメータ値を取得することもできる.
 
もし私たちがASP.にいたらNET Core MVCプロジェクトにはHomeControllerというアクションメソッドがあります.このメソッドにはLogin LogoutRequestタイプのパラメータがあります.Loginに後述するMyActionFilterブロッキングを登録していることに注意してください.
public class HomeController : Controller
{
    [MyActionFilter]
    [HttpPost]
    public IActionResult Login([FromBody]LoginLogoutRequest loginLogoutRequest)
    {
        return View();
    }
}
そのパラメータLoginLogoutRequestクラスの定義は次のとおりです.
public class LoginLogoutRequest
{
    public string Username { get; set; }
    public string Password { get; set; }

}
 
では、MyActionFilterというIActionFilterブロッカーを定義し、OnActionExecutingメソッドでHomeControllerのActionメソッドLoginのパラメータLoginLogoutRequestを取得します.public class MyActionFilterAttribute : Attribute, IActionFilter { /// /// OnActionExecuting Controller Action /// public void OnActionExecuting(ActionExecutingContext context) { // Controller Action foreach (var parameter in context.ActionDescriptor.Parameters) { var parameterName = parameter.Name;// Action var parameterType = parameter.ParameterType;// Action // Controller Action LoginLogoutRequest if (parameterType == typeof(LoginLogoutRequest)) { // , LoginLogoutRequest var loginLogoutRequest = context.ActionArguments[parameterName] as LoginLogoutRequest; var username = loginLogoutRequest.Username; var password = loginLogoutRequest.Password; } } } /// /// OnActionExecuted Controller Action /// public void OnActionExecuted(ActionExecutedContext context) { //TODO } }IActionFilterのOnActionExecutingメソッドでは,簡単なコードでLoginメソッドパラメータLogingoutRequestの値を取得できることが分かる.
 
転載先:https://www.cnblogs.com/OpenCoder/p/10254526.html