我使用以下方法从任何其他对象创建SelectListItem对象:
public static SelectListItem ToSelectListItem<T, TResult, TResult2>(T obj, Expression<Func<T, TResult>> value, Expression<Func<T, TResult2>> text)
{
string strValue = String.Empty;
string strText = String.Empty;
if (value != null)
strValue = (value.Body as MemberExpression).Member.Name;
if (text != null)
strText = (text.Body as MemberExpression).Member.Name;
...
}
I use this method like this:
SelectListItem item = ToSelectListItem(obj, x => x.ID, x => x.Name);
它可以正常工作。然而,当我指定一个来自关联对象的属性时,我只得到了该属性的名称。
SelectListItem item = ToSelectListItem(obj, x => x.ID, x => x.Profile.Name);
我能从'x => x.Profile.Name'获取的属性名称仅为'Name',而我真正想要获取的是'Profile.Name'。
如果有建议,将不胜感激。