首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ResultExecutedContext解析ActionFilterAttribute

用ResultExecutedContext解析ActionFilterAttribute
EN

Stack Overflow用户
提问于 2014-04-24 22:15:44
回答 1查看 363关注 0票数 1

在我的控制器中,JsonResult方法如下所示:

代码语言:javascript
复制
public JsonResult MyTestJsonB()
{
    return Json(new {Name = "John", Age = "18", DateOfBirth = DateTime.UtcNow}, "text/plain", JsonRequestBehavior.AllowGet);
}

在下面的属性类的OnResultExecuted方法中.

代码语言:javascript
复制
    public class JsonResultAttribute : ActionFilterAttribute
    {

        public override void OnResultExecuted(ResultExecutedContext filterContext)
        {
....
        }
    }

我希望能够按以下方式解析filterContext。我如何完成以下工作?

  1. 我希望能够检测到结果是System.Web.MVC.JsonResult类型的。
  2. 在结果中,我希望能够深入研究数据属性。
  3. 使用属性,我希望能够检测我的传入对象是否具有DateTime类型的属性。例如,如果对象如下所示:{ Name = "John",Age = "18",DateOfBirth = {4/24/2014 7:05:58 PM },我希望能够检测属性DateOfBirth是DateTime类型。
  4. 如果它有DateTime,那么我想采取一定的行动。
EN

回答 1

Stack Overflow用户

发布于 2016-11-03 00:35:09

您可以使用System.Reflection实现这一点。

代码语言:javascript
复制
public class JsonResultAttribute : ActionFilterAttribute
{

    public override void OnResultExecuted(ResultExecutedContext filterContext)
    {

        // Detect that the result is of type JsonResult
        if (filterContext.Result is JsonResult)
        {
            var jsonResult = filterContext.Result as JsonResult;

            // Dig into the Data Property
            foreach(var prop in jsonResult.Value.GetType().GetProperties(BindingFlags.Instance | BindingFlags.Public))
            {
                var propName = prop.Name;
                var propValue = prop.GetValue(jsonResult.Value,null);

                Console.WriteLine("Property: {0}, Value: {1}",propName,     propValue);

                // Detect if property is an DateTime
                if (propValue is DateTime)
                {
                    // Take some action
                }
            }
        }
    }
}

不要忘记在您的操作中添加[JsonResultAttribute]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23280846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档