在模型绑定阶段,有没有办法获取Action,并读取任何属性?
情景如下:
我有一个特定数据类型的默认模型绑定器设置,但取决于它的使用方式(通过操作的属性控制)我需要忽略一组数据。
我可以在控制器上下文中使用RouteData并查看操作名称,我可以用它来获取数据,但是想知道该信息是否已经可用。
此外,如果有问题的行为是异步的,那么查找它们的过程会更多......
答案 0 :(得分: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而不是在到达动作方法之前绑定模型时,才会有效。