2011-09-22 4 views
0

MVC 3에서 선택 목록에 옵션 목록을 유지할 수있는 방법이 있는지 궁금 해서요. 나는 MVC를 처음 접했지만 WebForms에서 첫 번째로드에 DropDownList를 채울 수있었습니다. 그런 다음 ViewState는 모든 AutoPostBacks에 대해 해당 목록을 유지 관리합니다. 종종 DropDownLists가 데이터베이스에 대한 쿼리로 채워지므로 좋았습니다. 나는 ViewState가 MVC에는 존재하지 않지만 모든 게시물의 요청 중에 데이터베이스를 치지 않아도 SelectList를 다시 채우는 더 좋은 방법이 있다는 것을 알고 있습니까?선택 목록 옵션을 다시 게시보다

답변

1

여기에 몇 가지 옵션이 있습니다. 선택한 값이 다시 게시됩니다. 더 이상의 ViewState가 없기 때문에 염두에 사용하면 이상적

  1. 당신의 저장소를 갖고 싶어 (. 당신이 하나가 해달라고하면 - 당신은 단순히 데이터의 저장소를 요청 하나를 생성하고는 캐싱 또는 부하를 제어하는) 그 드롭 다운에서 데이터를 요청하고 데이터를 캐시 한 다음 다시 요청하면됩니다. 리 바인딩 목록 사용 (DropDownFor 사용)
  2. MVCContrib의 Html.Serialize를 사용하여 본질적으로 ViewState를 사용합니다. 그러나 캐시는 조금 더 깨끗하고 전달 된 데이터에 의존하지 않습니다.

데이터를 게시 한 후에 모든 것이 '양호'하면 데이터를 다시로드하고 클라이언트에 표시하기 위해 '가져 오기'작업으로 다시 리디렉션해야한다는 것을 기억하십시오. 이것은 웹 양식에서 문제였습니다. 사용자가 포스트 백 이후에 XYZ를 보았지만 새로 고침 YXX를 본 후 언젠가 보았습니다. MVC 포스트에서 PRG 패턴 (리다이렉션)을 사용하면 새로운 데이터가로드됩니다.

게시물을 올린 후에는 일반적으로 유효성 검사 오류가있는 경우에만 데이터를 다시 표시해야하며, 그렇지 않으면 get 메소드로 리디렉션해야합니다.

+0

나는 그런 대답이 될 것이라고 생각했다. ViewState로 상태를 유지하는 WebForms 및 컨트롤을 사용하여 방금 망가 졌다고 생각합니다. 귀하의 회신에 감사드립니다. – MeloYelo

0

컨트롤러가 포스트 백에 값을받습니다. 선택한 값이 무엇인지 뷰에 알리기 위해 그 값을 다시 모델에 배치해야합니다.

관련 문제