我正在尝试创建自己的 HTML 帮助器,它接受一个表达式(类似于内置的 LabelFor 帮助器。我找到了当表达式与此类似时获取属性值的示例:
model => model.Forename
但是,在我的一些模型中,我想获取子元素中的属性,例如
model => mode.Person.Forename
在这些示例中,我无论如何都找不到(轻松)获取 Forename 的值。任何人都可以建议我应该如何获得这个值。
Thanks
如果您使用与 LabelFor 方法相同的模式,则表达式将始终是 Lambda 表达式,您只需执行它即可获取值。
var result = ((LambdaExpression)expression).Compile().DynamicInvoke(model);
通常,您始终可以将泛型表达式包装在 LambdaExpressions 中,然后编译并调用它们以获取值。
如果您想要的不是 Forename 的值,而是字段本身(fx. 打印出字符串“Forename”),那么您唯一的选择就是使用某种形式的表达式行走。在 C#4 中,框架提供了一个名为 ExpressionVisitor 的类,可用于此目的,但对于该框架的早期版本,您必须自己实现它 - 请参阅:http://msdn.microsoft.com/en-us/library/bb882521(VS.90).aspx http://msdn.microsoft.com/en-us/library/bb882521(VS.90).aspx
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)