我的解决方案包含类库项目作为业务库,并且我在其中编写了一个自定义操作筛选器。
public class SampleFilterAttribute : ActionFilterAttribute, IExceptionFilter
{
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var parameters =filterContext.ActionDescriptor.GetParameters();
var currentAction = filterContext.ActionDescriptor;
}
我现在的要求是将一些其他参数传递给 OnActionExecute 函数(如用户名,我将保存在数据库中的描述)。
我在 MVC 应用程序项目中的控制器操作如下所示:
[SampleFilterAttribute]
public ActionResult PurchaseRequisition(int? ID)
{
那么如何将一些自定义参数传递给 OnActionExecuted() 操作过滤器呢?
您可以通过 TempData
将参数传递给自定义过滤器属性,请参见下文:
样本过滤器属性
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();
}