Frage

Die ASP.net Seite Zur Zeit arbeite ich an hat eine Dropdown-Liste, die dazu bestimmt ist, eine Liste von Filtern zu haben. Wenn der Benutzer die Filter auswählt, würde Ich mag eine Benutzersteuerung anzuzeigen, die Eigenschaften geeignet für die Filter hat.

Hier ist die Controller-Aktion in Frage:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection collection)
{
  var filterType =  Request.Form["FilterSelect"];
  ViewData["FilterChosen"] = filterType;
  PopulateSelectionFiltersData();//This method fills up the drop down list
  //Here is where I would like to switch based on the filterType variable
  return View();
}

Der Filtertyp Variable hat den richtigen Wert, aber ich bin nicht sicher, wie man den nächsten Teil zu tun.

Auch als logische Folge Frage, was der beste Weg wäre, die ausgewählten Drop-Down-Wert zwischen den Aufrufen anhalten?

Vielen Dank,

KevDog

War es hilfreich?

Lösung

Speichern Sie die korrekte Steuerung in Viewdata angezeigt werden soll. Wie für die Menüs persistierenden, Ihre Entscheidungen sind die Cache (von vielen Sitzungen verwendet wird), Session oder TempData (wird nur für das nächste Verfahren in dieser Sitzung) (nur von dieser Sitzung verwendet). Alternativ könnten Sie es in Ihrem Datalayer zwischengespeichert haben. Typischerweise ich nur die Daten wieder beschaffen, bis es ein Performance-Problem wird -., Die es in der Regel nicht

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(FormCollection collection)
{
  var filterType =  Request.Form["FilterSelect"];
  ViewData["FilterChosen"] = filterType;
  PopulateSelectionFiltersData();//This method fills up the drop down list

  string userControl = "DefaultControl";
  switch (filterType)
  {
      case "TypeA":
         userControl = "TypeAControl";
         break;
      ...
  }

  ViewData["SelectedControl"] = userControl; 
  return View();
}


 <% Html.RenderPartial( ViewData["SelectedControl"], Model, ViewData ); %>
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top