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

时间:2013-12-26 10:08:37

标签: asp.net asp.net-mvc parameters class-library actionfilterattribute

我的解决方案包含类库项目作为业务库,我在其中编写了自定义操作过滤器。

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

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

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

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

那么如何将一些自定义参数传递给OnActionExecuted()Action Filter?

1 个答案:

答案 0 :(得分:0)

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

SampleFilterAttribute

    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();
    }