1

我目前正在处理的 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();
}

过滤器类型变量具有正确的值,但我不确定如何做下一部分。

此外,作为一个必然的问题,在调用之间保持所选下拉值的最佳方法是什么?

非常感谢,

凯夫狗

4

1 回答 1

3

存储要在 ViewData 中显示的正确控件。至于持久化菜单,您可以选择 Cache(由许多会话使用)、Session(仅由本会话使用)或 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 ); %>
于 2009-04-29T03:14:52.250 回答