我的解决方案包含类库项目作为业务库,我在其中编写了自定义操作过滤器。
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?
答案 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();
}