Asp.net-Core

將參數從動作過濾器傳遞給控制器

  • July 26, 2021

我可以將參數從動作過濾器傳遞給控制器,特別是通過參數(在 ASP.NET Core 中)嗎?

例如:

public class CategoryController : Controller
{
   [HttpGet]
   [ServiceFilter(typeof(ApiFilter))]
   public async Task<IActionResult> Index(string dataComingFromActionFilter)
   {
       //use dataComingFromActionFilter
   }
}

public class ApiFilter: IActionFilter 
{
   public void OnActionExecuting(ActionExecutingContext context)
   {
       //maybe something similar to
       context.sendToActionAsArgument['dataComingFromActionFilter'] = "data";

   }
}

您可以使用

context.ActionArguments["dataComingFromActionFilter"] = "data";

用於更新現有的動作參數。如果您需要添加新參數,則

context.ActionArguments.Add("dataComingFromActionFilter", "data"); 

然後您可以通過 Controller Action 到達它

在屬性集的值放入 HttpContext 的 Items 集合中:

context.HttpContext.Items.Add("DataFromAttribute", date);

並在控制器中以相同的方式讀取它們:

this.HttpContext.Items["DataFromAttribute"];

引用自:https://stackoverflow.com/questions/54012466