Динамический выбор пользовательского элемента управления Asp.Net MVC
-
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 ); %>