Ich versuche, meinen eigenen HTML-Helfer zu erstellen, der einen Ausdruck aufnimmt (ähnlich dem eingebauten LabelFor & lt; & gt; -Helfer. Ich habe Beispiele gefunden, um den Wert einer Eigenschaft zu erhalten, wenn der Ausdruck ähnlich ist:
%Vor%In einigen meiner Modelle möchte ich jedoch Eigenschaften in untergeordneten Elementen abrufen, z. B.
%Vor%In diesen Beispielen kann ich den Wert von Vorname nicht finden. Kann jemand beraten, wie ich diesen Wert bekommen sollte?
Danke
Wenn Sie das gleiche Muster wie das LabelFor & lt; & gt; Methode verwendet, dann ist der Ausdruck immer ein LambdaExpression und Sie können es einfach ausführen, um den Wert zu erhalten.
%Vor%Im Allgemeinen können Sie generische Ausdrücke immer in LambdaExpressions einschließen und dann & amp; Rufen Sie sie auf, um den Wert zu erhalten.
Wenn das, was Sie wollen, nicht der Wert von Vorname ist, sondern das Feld selbst (fx., um die Zeichenfolge "Vorname" auszudrucken), dann ist Ihre einzige Option, eine Form von ExpressionWalking zu verwenden. In C # 4 stellt das Framework eine Klasse namens ExpressionVisitor zur Verfügung, die dafür verwendet werden kann, aber für frühere Versionen des Frameworks müssen Sie es selbst implementieren - siehe: Ссылка
Ich habe das getrennt beantwortet, weil es zwei Dinge gab, die mir an der angenommenen Antwort nicht gefielen.
Beispiel, wo ich weiß, ist es für einen Lambda-Ausdruck entwickelt, der ein Byte-Array ergibt:
%Vor%Tags und Links asp.net-mvc html c# lambda html-helper