Ok, das ist für mich eine sehr schwierige Herausforderung. Wir nehmen unsere bestehende ASP.NET-Website und konvertieren (nur das PL neu gestalten) zu MVC. Unsere Seite ist sehr komplex. Aber der schwierige Teil besteht darin, die vorhandenen benutzerdefinierten Steuerelemente in MVC-Äquivalenz zu konvertieren. Die benutzerdefinierten Steuerelemente (ich spreche nicht über Benutzersteuerelemente) sind natürlich nur eine Klasse, die System.Web.UI.Control erbt und dieses Objekt durchgängig verwendet. Zum Beispiel haben wir einige Eigenschaften am Anfang der vorhandenen benutzerdefinierte Klasse wie folgt:Konvertieren von klassischen benutzerdefinierten ASP.NET-Steuerelement zu MVC
Dictionary<int, Control> configControls;
DropDownList kControl;
CheckBox confirmBox;
all diesen Variablen sind vom Typ Web-Steuerelemente in klassischen ASP.NET.
Also dachte ich mir, dass ich vielleicht das HtmlHelper-Objekt verwenden könnte (ohne komplett neue benutzerdefinierte Steuerelemente neu zu erstellen). Also habe ich versucht, dies:
(umfasst zunächst die Anweisung using die System.Web.MVC.Html an der Spitze meiner neuen benutzerdefinierten Klasse in unserem neuen Web-Projekt umfasst)
private Htmlhelper Helfer; Wörterbuch configControls; helper.DropDownList
aber das funktioniert nicht. Ich schätze, ich kann dieses Objekt nicht einfach so benutzen ?? Ich dachte mir, ich kann HtmlHelper im Dictionary verwenden und dann variable Typen von Helfer deaktivieren. aber das sind nur Erweiterungsmethoden, keine Objekte
Ich weiß nicht von einem Äquivalent zu etwas wie die generische "Control", die wir uns zur Verfügung haben, wie in klassischen ASP.NET erben. Sicherlich wird es in MVC nicht gleich sein (staatenlos und eine völlig unterschiedliche Vorgehensweise), aber was kann ich in MVC mit der gleichen Art von Konzept verwenden?
Also dachte ich mir, dass ich vielleicht das HtmlHelper-Objekt verwenden könnte (ohne komplett neue benutzerdefinierte Steuerelemente neu zu erstellen). Also habe ich versucht, dies:
(umfasst zunächst die Anweisung using die System.Web.MVC.Html an der Spitze meiner neuen benutzerdefinierten Klasse in unserem neuen Web-Projekt umfasst)
private HtmlHelper helper;
Dictionary configControls;
helper.DropDownList
aber dies funktioniert nicht . Ich weiß nicht einmal, ob dieser Ansatz in meiner benutzerdefinierten Steuerung funktioniert. Und wenn ich versuche, meine Hilfsvariable zu verwenden, erhalte ich keine Erweiterungsmethoden, es sei denn, sie befindet sich in einer existierenden Erweiterungsmethode, in der ein HtmlHelper-Parameter übergeben wird. Wenn ich also diese private Variable außerhalb meiner benutzerdefinierten Klasse erzeuge, bekomme ich nichts Intellisense zur Auswahl von "Helfer". Also muss ich das Objekt so definieren:?
private HtmlHelper htmlHelper = new HtmlHelper();
aber es fragt nach einem ViewContext und einem IViewDataContainer als params. Wenn ich eine benutzerdefinierte Methode ausbilde, die noch nichts über ihre Ansicht weiß (sollte es nicht nötig haben), weil ich einfach HMTL-Strings in dieser benutzerdefinierten Klasse erzeuge, die an die Extension-Methode übergeben werden, um schließlich Felder auszuspähen Vielleicht kann ich HtmlHelper in einer solchen benutzerdefinierten Klasse nicht verwenden.
Also kann ich dieses Objekt auf eine Weise anstelle von "Control" verwenden? Vielleicht kann ich sogar in meinem Wörterbuch Variablen anstelle von Steuerelement verwenden? Ich weiß nicht und dann Objekt auf HtmlHelper zu werfen, wenn ich diesen Wert aus dem Wörterbuch verwenden oder verweisen muss? Aber im Moment dachte ich, ich könnte das HtmlHelper-Objekt im Dictionary verwenden und dann die Variablen vom Helper abschalten. aber das sind nur Erweiterungsmethoden, keine Objekte.
Ich hoffe, ich mache hier einen Sinn, wenn Sie dies lesen.
Ich habe einen großen Kick von sehen "Classic ASP.net" :) – Hugoware
Vielen Dank für das darauf hin. Ich konnte nicht verstehen, was sich an dieser Frage so merkwürdig anfühlt. :) –