MVC - 将自定义参数传递给自定义操作筛选器



我的解决方案包含类库项目作为业务库,并且我在其中编写了一个自定义操作筛选器。

public class SampleFilterAttribute : ActionFilterAttribute, IExceptionFilter
{
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var parameters =filterContext.ActionDescriptor.GetParameters();
        var currentAction = filterContext.ActionDescriptor;
    }

我现在的要求是将一些其他参数传递给 OnActionExecute 函数(如用户名,我将保存在数据库中的描述)。

我在 MVC 应用程序项目中的控制器操作如下所示:

 [SampleFilterAttribute]
    public ActionResult PurchaseRequisition(int? ID)
    {

那么如何将一些自定义参数传递给 OnActionExecuted() 操作过滤器呢?

您可以通过 TempData 将参数传递给自定义过滤器属性,请参见下文:

样本过滤器属性

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
        var actionDescriptor = filterContext.ActionDescriptor;
        var controllerName = actionDescriptor.ControllerDescriptor.ControllerName;
        var actionName = actionDescriptor.ActionName;
        var userName = filterContext.HttpContext.User.Identity.Name;
        var timeStamp = filterContext.HttpContext.Timestamp;
        var parameters = filterContext.RouteData.Values["id"]; 
        var description = filterContext.Controller.TempData["Description"];
        base.OnActionExecuted(filterContext);
    }

行动

    [SampleFilter]
    public ActionResult PurchaseRequisition(int? id)
    {
        TempData["Description"] = "This is Description";
        return View();
    }

最新更新