2016-10-11 1 views
-1

Ist es möglich, eine generische Ansicht mit System.Reflection zu erstellen?

So konnte ich loop throught die class properties Schaffung inputs mit den @Html.EditorFor oder @Html.Editor oder sogar einem normalen <input />.

Mit diesem konnte ich ein template erstellen und es wiederverwenden, um Zeit zu sparen und ein angenehmes Bild für die Benutzer zu schaffen.

Generische Editor Vorlage

So ist es möglich?

Antwort

0

Ja, es ist möglich, das Modell der Ansicht Objekt sein sollte, und die Steuerung kann ein generischer Controller sein, aber Sie sollten Ihre eigene ControllerControllerFactory bauen wie:

public class MyGenericControllerFactory : DefaultControllerFactory 
    { 
     public override IController CreateController(RequestContext reqContext, string controllerName) 
     { 
      if(is controlleName generic) //you should define how build controller name when is generic 
      //it should contain the controller name and the generic type name 
      { 
       string contRealName = "";//get the real controller name from controllerName var 
       string genTypeName = ""; //get the generic type name fomr controllerName var 
       Type contType = Type.GetType(contRealName); 
       Type genType = Type.GetType(genTypeName); 
       contType = contType.MakeGenericType(genType); 
       return an instance of contType from your IoC container 
      } 
      else 
      { 
       Type contType = Type.GetType(controllerName); 
       return an instance of contType from your IoC container 
      } 
     } 
    } 
+0

ich Ihre Antwort und andere Dinge verwendet , ich erstelle eine '.cshtml' Datei oder ersetze sie, dann durchlaufe ich die 'Eigenschaften', wenn die Eigenschaft mich zu einer 'rekursiven Schleife' führt, ignoriere ich sie, wenn es eine Implementierung von 'IEnumerable ' ist a '@ Html.DropdownList (propName)' und fügen Sie dem 'ViewContext' einen' ViewBag' mit einer automatisch generierten Linq-Abfrage mit AI hinzu, wie ein großer generischer 'StringBuilder' zum Erzeugen und Lesen einer' .cshtml' Datei – Lucas

Verwandte Themen