2013-01-20 2 views
0

같은 드롭 다운 선택 값의 목록을 유지하기 위해 다음 GET을 수행에문제 내가보기 모델 속성이

private ListDictionary _claimDropdownValueCollection = new ListDictionary(); 
    public ListDictionary ClaimDropdownValueCollection { get { return _claimDropdownValueCollection; } set { _claimDropdownValueCollection = value; } } 

를, 내가 반복하고 "드롭 형"이름을 포함하는 내보기 모델도 다른 ListDictionary 이상 :

@foreach (System.Collections.DictionaryEntry de in Model.CCSetting_ClaimDropdownTypeCollection) { 
         <div class="formRow"> 
          <label>@EverythingToDoWith_CCSetting_ClaimDropdownTypes.getDropdownTypeName(Model.ccClaim.clientID, Convert.ToInt32(de.Key))</label> 
          <div class="formRight searchDrop"> 
           @Html.DropDownListFor(m => m.ClaimDropdownValueCollection[@de.Key], (IEnumerable<SelectListItem>) @de.Value, new { @class = "chzn-select", @data_placeholder="Choose an option...", @style="width: 350px;" }) 
          </div> 
          <div class="clear"></div> 
         </div> 
        } 

그래서 기본적으로,이 드롭 다운의 무리를로드, 그들의 '레이블은'사전에 키에 따라 인쇄됩니다. 각 드롭 다운에 대한 '값'은 각 사전의 VALUE에서 가져옵니다. 여기에는 각각 IENUMERABLE이 포함됩니다.

지금까지 모두 좋았습니다. 이제 사용자는 각 드롭 다운에서 선택을하고 HTTP POST를 수행합니다.

ClaimDropdownValueCollection[1]:2 
ClaimDropdownValueCollection[2]:5 
ClaimDropdownValueCollection[3]: 
ClaimDropdownValueCollection[4]:11 

은 그래서 키 1,2,3,4 4 드롭 다운을 것입니다 (내 키가 더 복잡 될 것입니다, 간단한 키를 여기 내 예의를 위해 : 브라우저 개발자 도구에서, 나는 다음과 같은 데이터를 다시 게시되고 참조 술)와 4 개 중 3 개가 선택되어 있으므로 선택된 ID 2, 5, 11을 다시 전달합니다.

하지만 내부적으로 디버깅 할 때 뷰 모델 listdictionary 객체의 일부로이 데이터를 볼 수 없습니다. 게시 된 데이터를받는 [HttpPost] 컨트롤러 메소드. "ClaimDropdownValueCollection"속성이 비어 있음을 보여줍니다.

내가 뭔가처럼 말 할 수있을 것으로 기대하고있다 :

foreach (DictionaryEntry de in vm.ClaimDropdownValueCollection) { 
//do something here with de.Key and de.Value       
        } 

이 그래서 내가 RAZOR 코드에서 잘못하고 있어요 ... 도와주세요!

답변

0

문제는 HTML 도우미와 어떻게 게시 되었습니까? 여기에 내가 그것을 해결하는 방법 (직장 내 CTO에 감사합니다!)입니다 : 내보기 모델 속성을 만든

은에서 채울 자원이 될 것이다 :

Dictionary<int, List<SelectListItem>> CCSetting_ClaimDropdownTypeCollection 

는 동일한 키를 다른 사전을 만든, 그 값은 사용자 선택이 될 것입니다 :

다음 RAZOR 측 지금

Dictionary<int, int> ClaimDropdownValueCollection 

,이 같은 (HTML.Hidden의 사용을주의하고, 대신 HTML.DropdownFor의 HTML.Dropdown)를하고있는 중이 야 0

@foreach (var de in Model.CCSetting_ClaimDropdownTypeCollection) { 
         <div class="formRow"> 
                  <div class="formRight searchDrop"> 
@Html.Hidden("ClaimDropdownValueCollection[" + @de.Key + "]", @de.Key) 
           @Html.DropDownList("ClaimDropdownValueCollection[" + @de.Value + "]", @de.Value, new { @class = "chzn-select", @data_placeholder="Choose an option...", @style="width: 350px;" }) 
          </div> 
          <div class="clear"></div> 
         </div> 
        } 

아마도 더 나은 방법으로 내 질문을 표현하지 않아서 불편을 드려 죄송합니다. 어쩌면 좌절감을 보였고 아마 구두점을 찍는 데 불만을 나타 냈습니다. 이 질문에 대한 '텀블 위드 (Tumbleweed)'배지를 받으면 나는 해결책을 올리고 다시 올리게되었다. 닫기를 클릭하십시오. 누군가 언젠가이 문제에 부딪 치길 바랍니다.

관련 문제