Pergunta

A página ASP.net Atualmente, estou trabalhando tem uma lista suspensa que se destina a ter uma lista de filtros para baixo. Quando o usuário seleciona o filtro, eu gostaria de exibir um controle de usuário que tem propriedades adequadas para o filtro.

Aqui está a ação do controlador em questão:

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

A variável tipo de filtro tem o valor correto, mas não estou certo de como fazer a próxima parte.

Além disso, como uma questão corolário, o que seria a melhor maneira de manter a queda selecionado para baixo valor entre chamadas?

Muito obrigado,

KevDog

Foi útil?

Solução

Guarde o controle correto para exibir em ViewData. Quanto persistindo os menus, suas escolhas são o cache (usado por muitas sessões), Session (usado apenas por esta sessão), ou TempData (usado apenas para o próximo método nesta sessão). Alternativamente, você pode tê-lo em cache em sua DataLayer. Normalmente, eu só refetch os dados até que se torne um problema de desempenho -. Que, geralmente, não

[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 em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top