문제

현재 작업중 인 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