我正在为MVC创建一个表单生成器,希望能够模拟Razor对链式属性的处理方式,具体如下:
以下是类似于Razor的输出结果:
```html
以下代码适用于单层链接(例如
我该如何调整代码,使得
builder.TextBoxFor(x => x.User.Email);
以下是类似于Razor的输出结果:
```html
这将以与Razor相同的方式产生以下输出:
```<input id="User_Email" name="User.Email" type="textbox" />
以下代码适用于单层链接(例如
x.Email
生成Email
),但我想检测最终属性之前是否有父级,然后使用递归返回链式结构(或至少向上移动一步)。private static string GetFieldName<TModel, TProperty>(Expression<Func<TModel, TProperty>> expression)
{
var memberExpression = (MemberExpression) expression.Body;
return memberExpression.Member.Name;
}
我该如何调整代码,使得
x.User.Email
生成的是User.Email
而不仅仅是Email
呢?关键在于对属性的引用。