gpt4 book ai didi

asp.net-mvc - 如何将变量传递给 ASP.NET MVC 应用程序中的自定义 ActionFilter

转载 作者:行者123 更新时间:2023-12-03 11:31:19 25 4
gpt4 key购买 nike

我的 MVC 应用程序中有一个 Controller ,我尝试使用 onResultExecuted 方法使用自定义 ActionFilterAttribute 记录详细信息。

I read this tutorial 理解和编写我自己的 Action 过滤器。问题是如何将变量从 Controller 传递到 Action 过滤器?

  • 我想获取调用 Controller 的输入变量。比如说,用户名/用户 ID。
  • 如果(在某些情况下)任何 Controller 方法抛出异常,我也想记录错误。

  • Controller ——
    [MyActionFilter]
    public class myController : ApiController {
    public string Get(string x, int y) { .. }
    public string somemethod { .. }
    }

    Action 过滤器 -
    public class MyActionFilterAttribute : ActionFilterAttribute {
    public override void onActionExecuted(HttpActionExecutedContext actionExecutedContext) {
    // HOW DO I ACCESS THE VARIABLES OF THE CONTROLLER HERE
    // I NEED TO LOG THE EXCEPTIONS AND THE PARAMETERS PASSED TO THE CONTROLLER METHOD
    }
    }

    我希望我已经在这里解释了这个问题。抱歉,如果我在这里遗漏了一些基本对象,我对此完全陌生。

    最佳答案

    方法 - 1

    Action 过滤器

    public class MyActionFilter : ActionFilterAttribute
    {
    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
    base.OnActionExecuted(filterContext);
    }
    }

    操作方法
    [MyActionFilter]
    public ActionResult Index()
    {
    ViewBag.ControllerVariable = "12";
    return View();
    }

    enter image description here

    如果你注意截图,你可以看到 ViewBag信息

    方法 - 2

    Action 过滤器
    public class MyActionFilter : ActionFilterAttribute
    {
    //Your Properties in Action Filter
    public string Property1 { get; set; }
    public string Property2 { get; set; }

    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
    base.OnActionExecuting(filterContext);
    }
    }

    操作方法
    [MyActionFilter(Property1 = "Value1", Property2 = "Value2")]
    public ActionResult Index()
    {
    return View();
    }

    关于asp.net-mvc - 如何将变量传递给 ASP.NET MVC 应用程序中的自定义 ActionFilter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209735/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com