Bekommen Wert von ASP.NET MVC Lambda-Ausdruck
Ich versuche, um meine eigene HTML-Helper nimmt in einem Ausdruck (ähnlich wie die built-in LabelFor<> helper. Ich habe festgestellt, Beispiele erhalten Sie den Wert einer Immobilie, wenn der Ausdruck ist ähnlich wie diese:
model => model.Forename
Aber in einigen meiner Modelle, ich möchte zu erhalten Eigenschaften untergeordnete Elemente, z.B.
model => mode.Person.Forename
In diesen Beispielen ist, kann ich nicht finden, trotzdem (leicht) erhalten Sie den Wert Vorname. Kann jemand raten, wie ich sollte immer diesen Wert.
Dank
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie mit dem gleichen Muster, dass die LabelFor<> Methode verwendet, der Ausdruck ist dann immer ein LambdaExpression und man kann nur führen Sie es um den Wert.
Im Allgemeinen, Sie können immer wrap generische Ausdrücke in LambdaExpressions und dann kompilieren & aufrufen, um den Wert.
Wenn das, was Sie wollen, ist nicht der Wert der Vorname, aber das Feld selber (fx. drucken aus dem string "Vorname"), dann ist Ihre einzige option ist die Verwendung von irgendeiner form von expressionwalking. In C#4 das framework bietet eine Klasse namens ExpressionVisitor, die dazu benutzt werden können, aber für frühere Versionen des Frameworks müssen Sie es selbst implementieren - siehe: http://msdn.microsoft.com/en-us/library/bb882521(VS.90).aspx
Ihre Suche nach dem Wert?
Warum würde das nicht funktionieren?
Ich beantwortet habe dies getrennt, da gab es zwei Dinge, die ich nicht gerne über die akzeptierte Antwort.
Beispiel, wo ich weiß, vorne ausgelegt ist es für ein lambda-Ausdruck ergibt, dass ein byte-array: