2016-05-13 10 views

Antwort

0

Die Art, wie ich dies tun würde, ist mit einer Moduleinstellung, die einem Inhaltsadministrator erlaubt, Ihr Modul zu verwenden, aber mit unterschiedlichem Verhalten auf verschiedenen Seiten basierend auf dem Wert der Moduleinstellung. Um eine funktionierende Implementierung von Moduleinstellungen in einem MVC-Modul anzuzeigen, laden Sie meinen GitHub Restaurant Menu MVC project herunter.

Wenn Ihre Einstellung beispielsweise "Datenquelle" lautet und Sie dem Benutzer erlauben, in der Modulansicht Einstellungen aus einer Dropdown-Liste mit Datenquellenoptionen auszuwählen (z. B. "Regionen", "Dozenten" usw.) , das einen Einstellungswert für Ihre Modulinstanz aktualisiert.

Dann können Sie in Ihrem Hauptansicht-Controller diese Einstellung abrufen und das Modell so ändern, dass die richtige Datenquelle verwendet wird. Diese Datenquelle wird in Ihrer Ansicht standardmäßig verwendet, um eine kaskadierende Gruppe von Dropdown-Elementen darzustellen (oder wie auch immer die Benutzeroberfläche die Hierarchiedaten darstellen soll).

Hier ist ein einfaches Beispiel ist:

public ActionResult Index() 
{ 
    string dataSrcSetting = "region"; 
    if (ModuleContext.Settings.ContainsKey("Data_Source")) 
    { 
     dataSrcSetting = ModuleContext.Settings["Data_Source"].ToString(); 
    } 

    // Get model 
    var model = new HierarchyDataModel(); 
    if (dataSrcSetting.Equals("region")) 
    { 
     model.ParentData = businessLogic.getCountries(); 
     model.ChildData = businessLogic.getRegions(); 
    } 
    else if (dataSrcSetting.Equals("lecturer")) 
    { 
     model.ParentData = businessLogic.getDepartments(); 
     model.ChildData = businessLogic.getLecturers(); 
    } 

    return View(model); 
} 
+0

Das ist viel versprechend, mein Problem zu lösen i mit Ihren Richtlinien testen Sie dann feedback.Thanks – Farai

+0

geben Vielleicht mein Problem noch viel besser zu klären, ich habe 2 Seiten je mit 2 Dropdown-Listen für die Suche, aber ich brauche sie auf einen einzigen MVC-Controller und bringen Sie unterschiedliche Ergebnisse zurück, je nachdem, welche Seite Sie gerade sehen. – Farai

+0

Ich habe das nicht versucht, aber Sie könnten die Einstellungen wie oben beschrieben verwenden, aber anstatt das Modell basierend auf der Einstellung zu ändern und die gleiche Ansicht zurückzugeben, könnten Sie zwei neue Aktionsmethoden erstellen (Region() und Lecture()), die mit Ihren 2 Ansichten (Region.cshtml und Lecture.cshtml) gehen. Jede Aktion würde das entsprechende Datenmodell aufbauen. Dann würden Sie in der 'if' Anweisung für die Einstellung aufrufen: return RedirectToAction ("Region") oder RedirectToAction ("Lecture") zurückgeben. Auf diese Weise würde Ihr Index (oder die Standardansicht) abhängig von der Moduleinstellung eine andere Ansicht anzeigen. – DotNetNuclear

Verwandte Themen