【问题标题】:Take parameter of a method into custom action filter MVC3 asp将方法的参数带入自定义操作过滤器 MVC3 asp
【发布时间】:2013-09-16 08:24:40
【问题描述】:

我一直在开发一个应用程序,每次您注册、修改、取消、删除等...某些东西时,都必须向用户发送通知(如果已配置),所以我打算这样做通过在数据库中保存进程的唯一标识符,然后检查通知是否配置了 id、进程和唯一标识符,然后发送通知。

要做到这一点,我有这个想法......控制器上的这个

   [NotificationFilter(id=10,proccess="Excecution") ]
   public Register(Entity entity,Guid uid){

   }

这在 ActionFilter 类上

public class NotificationFilter : ActionFilterAttribute
{
    public int id{ get; set; }
    public string proccess{ get; set; }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {

         dosomething(id,name,uid)
    }
}

但我想知道是否有办法将我的 Register 操作的 uid 参数放入 OnActionExecuted 方法中。

【问题讨论】:

  • 建议:您应该将您的代码移动到答案中并将其标记为这样,以便人们更容易找到您的解决方案。
  • @paul 谢谢你的建议,我只是按照你说的做了,现在很清楚了:)

标签: c# asp.net-mvc-3 custom-attributes action-filter


【解决方案1】:

接受 Neel Bhatt 的回答。我做了这样的事情来完成这项工作。

public class NotificationFilter : ActionFilterAttribute
{
    public int _id;
    public string _proccess;
    public Guid _uid; 

    public NotificationFilter(int id,string proccess)
    {
        _id= id;
        _proccess = proccess;
    }
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
         var val = filterContext.ActionParameters["uid"];

        _uid = (Guid)val;
    }

    public override void OnActionExecuted(ActionExecutedContext filterContext)
    {
         var uid = _uid;

         dosomething(id,name,uid)
    }
}

这对我有用,希望对其他人有帮助。

【讨论】:

    【解决方案2】:
    public override void OnActionExecuted(ActionExecutedContext filterContext)
        {
     var model = filterContext.ActionParameters.SingleOrDefault(ap => ap.Key == "uid").Value;
    
    
           if (model != null)
           {
              dosomething(id, name, uid)
           }
    }
    

    【讨论】:

    • 感谢 Neel Bhatt,它在 OnActionExecuting 上运行良好,但 ActionExecutedContext 没有 ActionParameters。
    猜你喜欢
    • 1970-01-01
    • 2012-01-16
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多