我想做一些类似于
HtmlHelpers在ASP.NET MVC中所做的事情.请考虑以下事项:
@Html.EditorFor(model => model.SomeProperty.SomeInnerProperty)
HtmlHelper不仅可以清楚地获取SomeInnerProperty的值,而且还知道我称之为该属性的“路径”,因为它创建了具有属性的相应HTML元素:
name="SomeProperty.SomeInnerProperty"
我想能够创建一个方法,可以获得类似于HtmlHelper的值和“路径”.我对现有的HtmlHelpers进行了一些反思,看起来像是一个兔子洞.我已经能够创建一个消耗它的方法,如下所示:
MyCustomMethod(model => model.SomeProperty.SomeInnerProperty);
private void MyCustomMethod(Expression<Func<object, object>> expression)
{
// I can inspect the expression object in the debugger here
}
在检查“表达”对象时,我可以通过反思来解决问题,但我不确定我的解决方案会有多强大,因为我只是通过观察来解决问题.此外,它似乎比它应该更难;就像我错过了一些简单的事情.
有任何想法吗?
最佳答案 要获得完整的路径:
expression.Body.ToString()将为您提供’model.SomeProperty.SomeInnerProperty’.获取第一个点后的子字符串以获取’SomeProperty.SomeInnerProperty’.
要获得价值:
.expression.Compile()调用(modelObject);