2010-05-16 6 views
1

나는 DropDownList로 강한 형 모델 뷰 클래스에서ASP.NET MVC DropDownList로 유효성 검사

[DisplayName("Country")] 
public List<SelectListItem> Countries { get; set; } 

속성이 있습니다.

나는 ModelState.IsValid 양식 포스트 백에 거짓 & 오류가 알려줍니다 나라를 위해 항상 여부를 확인하려고

는 또는 종류의 일부 "SelectListItem하는 [가치]를 변환 할 수 없습니다."

내가 선택한 값을 드롭 다운 (Form 값 컬렉션에서 값을 읽어야 할 것처럼 보입니다)에 대한 직접 매핑이 없지만 List 속성에 대한 바인딩 및 유효성 검사를 어떻게 무시할 수 있습니까? 다른 모든 필드가 제대로 채워지면 ModelState.IsValid 특성을 true로 설정하기 만하면됩니다.

는 전송 된 값이 아니라 SelectListItem 또는 List<SelectListItem>의 목록보다 유형 String 또는 Country의 때문에

답변

0

그것을가 사전에 감사합니다.

UI의 컨트롤에 무엇을 바인딩하고 있습니까? Country이 DAL에서 유형의 이름입니다

[DisplayName("Country")] 
public List<Country> Countries { get; set; } 

을 시도합니다.

편집 : 모델이 기대처럼 당신이 잡되는 오류를 기반으로, 그것은 소리 값이 String 그렇게 List<String>에 대한 List<Country>을 교환하려고합니다.

[DisplayName("Country")] 
public List<string> Countries { get; set; } 
+1

여전히 ModelState 오류입니다. 문자열을 국가로 변환 할 수 없습니다. –

+0

그러면 문자열이어야합니다. 너에게 너에게 말하는거야. 할 필요가. –

+0

그러나 그것은 문자열 일 수 없습니다. 뭔가의 목록이기 때문에 :) DropDownListFor를 사용하고보기 모델의 문자열 속성을 가리키는 [name] 특성을 가진 DropDownList를 사용하려는 내 포기를 포기했습니다. –

0

마지막으로 해결 방법을 사용했습니다.

내 지금 모델 :.

class Model 
{ 
... 
    [DisplayName("Country")] 
    List<Country> Countries; 

    Guid CountrySelected <-- new field! 
... 
} 

내가 Html.DropDownList ("CountrySelected", Model.Countries.Select (X => 새로운 SelectItemList을 사용 ..) 대신 HtmlDropDownListFor의

HtmlDropDownListFor지도 [ id selected] to CountrySelected 속성을 선택하십시오. 이제 [id selected]가 CountrySelected에 매핑됩니다.

관련 문제