Pregunta

La página ASP.net en la que estoy trabajando actualmente tiene una lista desplegable que pretende tener una lista de filtros. Cuando el usuario selecciona el filtro, me gustaría mostrar un control de usuario que tenga las propiedades adecuadas para el filtro.

Aquí está la acción del controlador en cuestión:

[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 tipo de filtro tiene el valor correcto, pero no estoy seguro de cómo hacer la siguiente parte.

Además, como pregunta complementaria, ¿cuál sería la mejor manera de conservar el valor desplegable seleccionado entre las llamadas?

Muchas gracias,

KevDog

¿Fue útil?

Solución

Almacene el control correcto para mostrar en ViewData. En cuanto a la persistencia de los menús, sus opciones son Caché (usado por muchas sesiones), Sesión (usado solo por esta sesión) o TempData (usado solo para el siguiente método en esta sesión). Alternativamente, podría tenerlo almacenado en caché en su DataLayer. Por lo general, solo recupero los datos hasta que se convierten en un problema de rendimiento, lo que no suele ocurrir.

[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 ); %>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top