2010-07-05 4 views
0

나는 막혔다!모델 바인딩 IDictionary <int, IList <int>> in ASP.Net MVC 2.0

친절하게 도와주세요.

나는

public IDictionary<int, IList<int>> SelectedErrorsErrorType { get; set; } 

은 기본적으로 내가 하나 개 이상의 탭에서 체크 박스의 그룹이 ... 내 MVC 2.0 프로젝트에 다음 뷰 모델 속성이 있습니다. 이 탭들은 영어, 독일어, 프랑스어 등입니다. 나는 Dictionary 키로 TabId를 사용하고 사전 값 (Integer List)으로 선택된 체크 박스 ID를 사용하고 싶습니다. 내 모델을 그렇게 묶을 수는없는 것 같습니다. 이전에 stackoverflow에서 사전 키로 매핑한다는 사실을 발견했습니다. 예를 들어 숨겨진 필드가 필요합니다.

<input type="hidden" name="<%: String.Format("SelectedErrorsErrorType[{0}].Key", index) %>"value="<%: item.LanguageId %>" /> 

괜찮습니다! 하지만 어떻게 내 키에 대해 값 필드를 매핑 할 수 있습니다.

도움을 주시면 감사하겠습니다.

감사합니다.

답변

0

여기처럼 보인다 솔루션입니다 : ASP.NET MVC - Model binding a set of dynamically generated checkboxes - how to

그러나 당신은 또한

public class ErrorType 
{ 
    public int Key { get; set; } 
    public int Value { get; set; } 
} 

public class ViewModel 
{ 
    public IList<ErrorType> PostedValues { get; set; } 

    public IDictionary<int, IList<int>> SelectedErrorsErrorType 
    { 
    get { return PostedValues.GroupBy(x => x.Key).ToDictionary(x => x.Key, x => x.Select(y => y.Value).ToList()); 
    set { /* backward if you need it */ } 
    } 
} 

를 사용하고 PostedValues에 바인딩 할 수 있습니다.

+0

안녕하세요 덕분! 나는 당신의 해결책도 시도 할 것입니다. – user383698

1

이것은 아주 쉬웠습니다. 왜 내가 이것을 처음에 파악할 수 없었는지 알 수 없습니다. 그것은 나를 위해 일한 방법

여기 ... 당신의 노력 친구에 대한

<input type="hidden" name="<%: String.Format("SelectedErrorsErrorType[{0}].Key", index) %>" 
                  value="<%: item.LanguageId %>" /> 

<%: Html.CheckBox(String.Format("SelectedErrorsErrorType[{0}].Value[{1}]", index, counter), false, new { @value = errorType.ErrorTypeId })%> 
+0

당신은 당신의 게시물에 이것을 새 게시물이 아니게 써야합니다! – RobertPitt

+0

Ohhkk ... 다음 시간은 돌봐 줄 것입니다, 친구! – user383698

관련 문제