Динамический выбор пользовательского элемента управления Asp.Net MVC

StackOverflow https://stackoverflow.com/questions/800718

  •  03-07-2019
  •  | 
  •  

Вопрос

Страница ASP.net, над которой я сейчас работаю, имеет раскрывающийся список, в котором должен содержаться список фильтров.Когда пользователь выбирает фильтр, я хотел бы отобразить пользовательский элемент управления, имеющий свойства, соответствующие фильтру.

Вот рассматриваемое действие контроллера:

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

Переменная типа фильтра имеет правильное значение, но я не уверен, как делать следующую часть.

Кроме того, как следствие, как лучше всего сохранить выбранное раскрывающееся значение между вызовами?

Большое спасибо,

КевДог

Это было полезно?

Решение

Сохраните правильный элемент управления для отображения во ViewData.Что касается сохраняющихся меню, то вашим выбором являются кэш (используемый многими сеансами), сеанс (используемый только этим сеансом) или Tempdata (используется только для следующего метода в этом сеансе).Альтернативно вы можете кэшировать его в своем DataLayer.Обычно я просто обновляю данные до тех пор, пока это не станет проблемой с производительностью, чего обычно не происходит.

[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 ); %>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top