如何从OnActionExecuting操作过滤器返回值

时间:2015-07-03 17:45:47

标签: asp.net-web-api asp.net-apicontroller

这是我的API动作过滤器,我希望能够返回ccaccount obj

对调用方法的良好登录结果

任何想法如何?

感谢

   public class CAPILoginFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext i_actionContext)
        {
            CRequestBase request = (CRequestBase)i_actionContext.ActionArguments["i_request"];

            CCAccount account = CAPILogin.AccountIDGetOBJ(request.UserName, request.Password);

            if(account == null)
            {
                throw new HttpResponseException(new HttpResponseMessage(HttpStatusCode.Unauthorized));
            }
            else
            {
                //return account object to calling method here
            }

        }
    }

1 个答案:

答案 0 :(得分:1)

无法从OnActionExecuting传回值,但您可以在OnActionExecuting事件中设置属性,该属性可由导致其触发的方法读取。

在OnActionExecuting事件中,在请求对象上创建一个新属性。

context.Request.Properties["X"] = variableX;

这将导致事件像这样触发

的方法可读
if (this.Request.Properties.ContainsKey("X"))
{
string x = this.Request.Properties["X"].ToString();

    // Use x here
}

戴夫