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 に表示する正しいコントロールを格納します。メニューの永続化に関しては、キャッシュ (多くのセッションで使用)、セッション (このセッションでのみ使用)、または 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 に答える