2011-01-17 6 views
1

Ich habe einige Anzeige Vorlagen in meinem ASP.NET MVC-Projekt. Im Moment kann ich sie wie so verwenden:Create Ausdruck <Func <TModel, TValue >> mit refelction

@Model MyModel 

@Html.DisplayFor(x => x.PropertyName) 

Was ich möchte, ist nur eine Schleife durch das Objekt Diagramm tun, und tut dies dynamisch:

@Model MyModel 

foreach(var property in MyModel.GetType().GetProperties()){ 
    @Html.DisplayFor(/*Any way to do this?*/) 
} 

Irgendwelche Ideen?

+0

Hmm ... Ich hatte ein Text Beispiel, aber das Problem ist, dass die DisplayFor-Methode auch generisch ist ... das macht es schwierig ... –

+0

Es wird * entlang der Linien von * 'var param = Expression.Parameter (MyModel.GetType()); Foreach (Var-Eigenschaft in MyModel.GetType(). GetProperties()) { @ Html.DisplayFor (Ausdruck.Lambda (Expression.Property ( Param, Eigenschaft), param)); } '- aber mit etwas MakeGenericMethod in der Mitte. Lohnt es sich wirklich? –

+0

NR. :) danke ... wäre, wenn wir mehr Display-Vorlagen hätten, aber ich würde es lieber von Hand machen ... bedenken Sie - das wird mich jetzt ärgern ... – iwayneo

Antwort

1

Wenn ich mich richtig erinnere, das ist genau das, was DisplayForModel bereits tut:

@Html.DisplayForModel(yourModel); 
+0

es tut aber die Antwort, die ich gepostet habe macht es funktioniert mit komplexen/verschachtelten Typen :) – iwayneo