用過ASP.NET Core MVC中IActionFilter攔截器的開發(fā)人員,都知道這是一個非常強大的MVC攔截器。最近才發(fā)現IActionFilter的OnActionExecuting方法,甚至可以獲取Controller的Action方法參數值。
假如我們在ASP.NET Core MVC項目中有一個HomeController,其中有一個Action方法叫Login,該方法有一個LoginRequest類型的參數,注意我們在Login上注冊了我們后面會講解的MyActionFilter攔截器:
public class HomeController : Controller
{
[MyActionFilter]
[HttpPost]
public IActionResult Login([FromBody]LoginRequestloginLogoutRequest)
{
return View();
}
}
其參數LoginRequest類的定義如下:
public class LoginRequest
{
public string Username { get; set; }
public string Password { get; set; }
}
那么我們可以定義一個IActionFilter攔截器叫MyActionFilter,在其OnActionExecuting方法中,來獲取HomeController中Action方法Login的參數LoginRequest:文章來源:http://www.zghlxwxcb.cn/news/detail-419394.html
public class MyActionFilterAttribute : Attribute, IActionFilter
{
/// <summary>
/// OnActionExecuting方法在Controller的Action執(zhí)行前執(zhí)行
/// </summary>
public void OnActionExecuting(ActionExecutingContext context)
{
//循環(huán)獲取在Controller的Action方法中定義的參數
foreach (var parameter in context.ActionDescriptor.Parameters)
{
var parameterName = parameter.Name;//獲取Action方法中參數的名字
var parameterType = parameter.ParameterType;//獲取Action方法中參數的類型
//判斷該Controller的Action方法是否有類型為LoginRequest的參數
if (parameterType == typeof(LoginRequest))
{
//如果有,那么就獲取LoginRequest類型參數的值
var LoginRequest= context.ActionArguments[parameterName] as LoginRequest;
var username = LoginRequest.Username;
var password = LoginRequest.Password;
}
}
}
/// <summary>
/// OnActionExecuted方法在Controller的Action執(zhí)行后執(zhí)行
/// </summary>
public void OnActionExecuted(ActionExecutedContext context)
{
//TODO
}
}
可以看到在IActionFilter的OnActionExecuting方法中,通過很簡單的代碼,我們就可以獲取到Login方法參數LoginRequest的值。文章來源地址http://www.zghlxwxcb.cn/news/detail-419394.html
到了這里,關于ASP.NET Core MVC中的IActionFilter.OnActionExecuting方法,可以獲取Controller的Action方法參數值的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!