Question

La page ASP.net sur laquelle je travaille actuellement contient une liste déroulante destinée à contenir une liste de filtres. Lorsque l'utilisateur sélectionne le filtre, je souhaite afficher un contrôle utilisateur doté de propriétés appropriées pour le filtre.

Voici l'action du contrôleur en question:

[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();
}

La variable de type de filtre a la valeur correcte, mais je ne sais pas comment faire pour la partie suivante.

En outre, comme question corollaire, quel serait le meilleur moyen de conserver la valeur de liste déroulante sélectionnée entre les appels?

Merci beaucoup,

KevDog

Était-ce utile?

La solution

Stockez le contrôle correct à afficher dans ViewData. Quant à la persistance des menus, vous avez le choix entre Cache (utilisé par plusieurs sessions), Session (utilisée uniquement par cette session) ou TempData (utilisée uniquement pour la méthode suivante de cette session). Sinon, vous pouvez le mettre en cache dans votre DataLayer. En règle générale, je récupère simplement les données jusqu'à ce que cela devienne un problème de performances, ce qui n'est généralement pas le cas.

[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 ); %>
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top