2017-11-29 6 views
-1

Wie kann ich diese erhalten eine Eigenschaft dynamicly wie dies in C# erhaltenWie kann ich eine Eigenschaft dynamisch in einem Modell mit C#

@LabelFor(m => m.GetType().GetProperty("Property1")) 
@LabelFor(m => m.GetType().GetProperty("Property2")) 
+2

Was ist das Problem, das Sie versuchen, mit diesem Konstrukt zu lösen? Sie müssen mehr Informationen zu Ihrer Frage bereitstellen, damit die Leute Ihnen wirklich helfen können. – Sefe

Antwort

0

Versuchen:

public class PropOf<T> 
{ 
    public static string Property<TProp>(Expression<Func<T, TProp>> expression) 
    { 
     var body = expression.Body as MemberExpression; 
     if (body == null) 
      throw new ArgumentException("'expression' should be a member expression"); 
     return body.Member.Name; 
    } 
} 

Verbrauch:

@ LabelFor (m => m.GetType(). GetProperty (PropOf < YourModelOrClassName> .Eigenschaft (x => x.Property1)))

+0

Wie ist das "dynamisch" - der ursprüngliche Beitrag impliziert die Eigenschaft war zur Kompilierzeit nicht bekannt. Wenn die Eigenschaft zur Kompilierzeit bekannt ist, können Sie einfach '@LabelFor (m => m.Property1)' ausführen. –

+0

Ja, du hast Recht. Seine Frage ist jedoch, "wie man Eigenschaft dynamisch in C# bekommt" ... die obige Verwendung ist nur ein Beispiel dafür, es zu benutzen und nichts zu behandeln, was mit Rasierklingen-Code zu tun hat. Ich kann ihn einfach nicht bitten, mehr Details zu seiner Frage zu geben, als ich gerade erst gestern registriert habe und kann keine Kommentare von den Fragen posten. :) – Pete

+0

das eigentliche Problem ist, dass ich eine Sicht erstellen muss, aber ich möchte nicht jede Eigenschaft schreiben. –

0

ich wanto, dies zu ändern:

@Html.TextBoxFor(model => model.Prop1) 
@Html.TextBoxFor(model => model.Prop2) 
.... 
@Html.TextBoxFor(model => model.Propn) 

dazu:

for (var prop in {"Prop1","Prop2", ... , "Propn"}) 

@Html.TextBoxFor(model => model.GetType().GetProperty(prop)) 
0

bereits.

foreach (var prop in model.GetType().GetProperties()) 
{ 
    @Html.TextBoxFor(model => model.GetType().GetProperty(prop.Name)) 
} 

hat es nicht getestet. ich hoffe es hilft. :)

Verwandte Themen