Ich portiere eine Suchanwendung von Classic ASP nach ASP.NET MVC2. Eine der hte Seiten ist ein dynamisch gefülltes Suchformular, das in 4 Kategorien mit jeweils 2 Zeilen unterteilt ist.
Der Client kann Optionen für jede dieser Kategorien deaktivieren. Wenn dies geschieht, wird jede Kategorie dynamisch von oben nach unten, von links nach rechts aufgefüllt. Die Person, die die Classic ASP-Version programmiert hat, hat eine Subroutine eingerichtet, die die Datenbank durchsucht (die für jedes Suchfeld ein boolesches Feld enthält) und dann ein Array zurückgegeben hat. Er nahm dann das Array und rief eine andere Subroutine auf, die das Array durchschlug und dann jede der Kategorien erzeugte.
Im Moment kann ich mir nur ein Modell mit Methoden für jede der Kategorien erstellen, von denen jede eine Liste zurückgibt. Ein einfaches Beispiel wäre:
%Vor%Dann kann ich die Liste nach der Größe jeder Zeile aufteilen und dann die Liste durchblättern und ein Benutzersteuerelement aufrufen, das den HTML-Code dynamisch anhand eines Namensparameters rendern kann.
Das Problem mit dieser Technik ist, dass es aus irgendeinem seltsamen Grund so ist, als ob ich das nicht auf die einfachste Art und Weise mache. Für jeden, der dies liest, gibt es einen einfacheren Weg, wie Sie das umsetzen könnten?
Danke!
Das ist etwas, was ich irgendwann untersuchen wollte. Nachdem ich mich in Rails eingemischt hatte, wurde ich mit dem Blick auf das Modell verwöhnt.
Es scheint, dass es einen Helfer im MVC-Raum namens Html.EditorForModel () gibt. Dieser Helfer generiert ein Formular für das Modell, an das die Ansicht gebunden ist. Ich bin mir nicht sicher, was es in Ihrer Situation tun würde, aber es wäre sicherlich interessant, die Ausgabe zu sehen und vielleicht könnte es Ihnen einige Ideen für eine persönliche Implementierung geben.
Viel Glück!
Hier ist was ich empfehlen würde. Erstellen Sie ein Div, das den dynamischen Inhalt enthält, und fügen Sie diesen Inhalt in eine Teilansicht ein. In diesem Fall gibt es eine Teilansicht namens Products.ascx
%Vor%Rufen Sie eine JavaScript-Funktion auf, wenn auf eine Kategorie geklickt wird.
%Vor%Verwenden Sie JQuery, um den Wert des Kontrollkästchens zu ermitteln, und veröffentlichen Sie anschließend auf dem Server. Im folgenden Beispiel heißt mein Controllername Produkte. Die vom Server zurückgegebene Information ist die aktualisierte Teilansicht, die den Div-Inhalt ersetzt.
%Vor%Hier ist die CategoryChanged-Funktion in ProductsController
%Vor%und schließlich ... Die Hilfsfunktion, die taktet, rendert eine Teilansicht einer Zeichenkette.
%Vor%Wie wäre es, die Listen bei Bedarf mit JavaScript (jQuery) auf der Clientseite hinzuzufügen? Die Daten können mit einem Ajax-Aufruf gefüllt werden. Sobald alle Felder ausgefüllt sind und der Benutzer sich anmeldet, kann die Aktionsmethode alle eingehenden Parameter übernehmen und eine Suche basierend darauf durchführen.
Ich empfehle die Verwendung der integrierten Ajax-Formulare mit MVC 2. Sie können Teilsteuerelemente verwenden, die basierend auf dem an sie übergebenen Modell erstellt werden. Dein Ansatz wäre ungefähr so:
Zuerst der Controller
%Vor%Dann hätten Sie in der Ansicht so etwas.
%Vor%Nun, wenn Sie ein Kontrollkästchen benötigen, um das Senden zu starten, können Sie ein wenig jquery magic
verwenden %Vor%Die Live-Methode in jQuery stellt sicher, dass die Aktion allen aktuellen und zukünftigen Instanzen der Klasse zugewiesen wird, wenn Sie sie allen Kontrollkästchen in Ihrer Teilansicht zuweisen. Sie bewirken, dass die Ajax-Form zurückgeschrieben wird, die dann Ihre Teilansicht zurückgibt - basierend auf dem aktualisierten Modell neu geschrieben wird und den Inhalt des Div ersetzt.
Der Vorteil gegenüber der reinen Clientseite ist, dass Sie MVC mit Ihrem Modell arbeiten lassen können und sich nicht darum kümmern müssen, ein paar Javascript zu formatieren oder zu ändern, um zu ändern, wie etwas aussieht oder funktioniert. Sie ändern nur Ihre Ansicht und alles funktioniert automatisch.
Tags und Links asp.net-mvc c# asp.net-mvc-2