質問

現在作業中の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();
}

フィルタータイプ変数の値は正しいですが、次の部分の実行方法がわかりません。

また、当然の質問として、選択したドロップダウン値を呼び出し間で保持する最良の方法は何ですか?

どうもありがとう、

KevDog

役に立ちましたか?

解決

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