【问题标题】:How to pass parameters to actionfilter in different controllers如何将参数传递给不同控制器中的actionfilter
【发布时间】:2017-02-02 02:57:08
【问题描述】:

我已经在这里检查了答案。 How to pass parameters to a custom ActionFilter in ASP.NET MVC 2? 我想根据传入控制器的唯一 ID 检查多个控制器中的条件。

这是 actionfilter 的代码。

public class AnswerCompletedAttribute : System.Web.Http.Filters.ActionFilterAttribute, IActionFilter
{
    public string p { get; set; }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        throw new NotImplementedException();
    }

    public void OnActionExecuting(ActionExecutingContext filterContext)
    {
        if (filterContext.ActionParameters.ContainsKey(p))
        {
            var id = filterContext.ActionParameters[p] as Guid?;
            if (Db.IsRespondentAnswerCompleted(id))
            {
                filterContext.Result = new RedirectToRouteResult(
                    new RouteValueDictionary
                    {
                    { "controller", "Error" },
                    { "action", "NotFound" }
                    });
            }
        }
    }
}

还有我在控制器中的代码,

[AnswerCompleted(p = "uniqueId")]
    public ActionResult Index(Guid? uniqueId)
    {

        //do something
        return View();
    }

我应该如何更改它以使其正常工作?

【问题讨论】:

  • 请解释您遇到的错误?
  • @Arathy T N 没有错误,过滤器不起作用。它不会停止动作加载。
  • 您尝试调试时发生了什么?

标签: c# asp.net-mvc asp.net-mvc-4 action-filter


【解决方案1】:

发现是继承自错误的类, 它应该是 system.web.mvc.actionfilterattribute 而不是 System.Web.Http.Filters.ActionFilterAttribute

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-07-14
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 1970-01-01
    相关资源
    最近更新 更多