ASP.NET MVC - 如何从ActionExecutedContext访问FormCollection?

时间:2014-04-10 22:17:27

标签: asp.net-mvc asp.net-mvc-5

在视图中,我正在向表单添加自定义输入。此输入不是视图绑定的模型的一部分。它是高度定制的,取决于运行时的条件。

当控制器处理POST时,我可以毫无问题地访问已发布的表单字段。

[HttpPost]
[MyCustomActionFilter()]
public ActionResult Edit(int id, IJobType jobType, FormCollection formCollection)
{
    // blah

    string customValue = formCollection["CustomField"]; 

    return View(jobType);
}

我有一个在控制器操作之后运行的ActionFilter来处理自定义输入,但我看不到从这个过滤器访问FormCollection的简单方法。

[AttributeUsage(AttributeTargets.Method, AllowMultiple = false, Inherited = true)]
public class MyCustomActionFilter : FilterAttribute, IActionFilter
 {
    public MyCustomActionFilter()
    {

    }

    public void OnActionExecuted(ActionExecutedContext filterContext)
    {
        // How to access the FormCollection here?
    }
}

关于如何从此过滤器轻松引用FormCollection的任何想法?

这适用于ASP.NET MVC 5.

谢谢!

1 个答案:

答案 0 :(得分:1)

看来你可以做这样的事情

var formCollection = new FormCollection(
   filterContext.HttpContext.Request.Form
);