J'utilise la méthode suivante pour créer un objet SelectListItem de tout autre objet:Comment obtenir le nom complet de la propriété d'un lambda
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;
...
}
J'utilise cette méthode comme ceci:
SelectListItem item = ToSelectListItem(obj, x => x.ID, x => x.Name);
Et ça marche bien. Cependant, quand je précise une propriété d'un objet associé tout ce que je reçois est le nom de la propriété
SelectListItem item = ToSelectListItem(obj, x => x.ID, x => x.Profile.Name);
Le nom de la propriété, je suis en mesure d'obtenir de « x => x.Profile.Name » est seulement ' Nom 'et ce que je voulais vraiment obtenir était' Profile.Name '.
Toutes les suggestions seraient appréciées.
duplication possible de [C#: obtention de noms de propriétés dans une chaîne à partir de l'expression lambda] (http://stackoverflow.com/questions/1667408/c-getting-names-of-properties- en-chaîne-de-lambda-expression) – nawfal