代码之家  ›  专栏  ›  技术社区  ›  Kieron

在模型绑定期间获取操作

  •  1
  • Kieron  · 技术社区  · 14 年前

    在模型绑定阶段,有没有一种方法可以获取操作并读取任何属性?

    场景是这样的:

    我已经为某个数据类型设置了一个默认的模型绑定器,但是根据它的使用方式(通过操作的属性控制),我需要忽略一组数据。

    我可以在控制器上下文中使用routedata并查看操作名,我可以使用它来获取数据,但不知道该信息是否已经可用。

    此外,如果所讨论的操作是异步的,那么在查找它时,它们将涉及更多的处理…

    1 回复  |  直到 14 年前
        1
  •  0
  •   jwsample    14 年前

    您可以遍历堆栈跟踪并找到第一个返回actionResult并提取属性的方法:

        StackTrace st = new StackTrace();
        for (int i = 0; i < st.FrameCount; i++)
        {
            StackFrame frame = st.GetFrame(i);
            MethodBase mb = frame.GetMethod();
            if (mb is MethodInfo)
            {
                MethodInfo mi = (MethodInfo)mb;
                if (typeof(ActionResult).IsAssignableFrom(mi.ReturnType))
                {
                    object[] methodAttributes = mb.GetCustomAttributes(true);
                    object[] objectAttributes = mb.DeclaringType.GetCustomAttributes(true);
                }
            }
        }
    

    只有在调用操作后调用updateModel,而不是在到达action方法之前绑定模型时,这才有效。

    推荐文章