1

有没有办法在模型绑定阶段获取动作并读取任何属性?

场景是这样的:

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

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

此外,如果有问题的操作是异步操作,他们会在查找它时涉及更多处理......

4

1 回答 1

0

您可以遍历堆栈跟踪并找到返回 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 才有效,而不是在到达操作方法之前绑定模型时调用。

于 2010-08-15T13:59:04.610 回答