ASP.NET MVC의 기본 모델 바인더에 문제가 있습니다. 보기는 다음과 같이 HTML이 포함asp.net mvc 기본 모델 바인딩 문제
<input name="SubDTO[0].Id" value="1" type="checkbox">
<input name="SubDTO[1].Id" value="2" type="checkbox">
이 내 단순화 '모델'
public class SubDTO
{
public virtual string Id { get; set; }
}
public class DTO
{
public List<SubDTO> SubDTOs { get; set; }
public DTO()
{
SubDTOs = new List< SubDTO>();
}
}
이 모든 사용자가 선택하면 잘 작동 적어도 첫 번째 체크 박스 (SubDTO [0] .ID) . 컨트롤러는 잘 초기화 된/바인딩 된 DTO를 '수신'합니다. 그러나 첫 번째 확인란을 선택하지 않은 경우 (예 : SubDTO [1] .Id) 개체 SubDTO는 null입니다. 누군가이 '이상한'행동을 설명하고 그것을 극복 할 수 있습니까? 감사.
행복을 빌며, 기독교
PS :
컨트롤러는 다음과 같습니다
[Transaction]
[AcceptVerbs(HttpVerbs.Post)]
public RedirectToRouteResult Create(DTO DTO)
{
...
}
PPS :
내 문제는 내가 확인란을 선택하면 그 SubDTO [0] .Id, SubDTO [1] .Id, SubDTO [2] .Id SubDTO가 초기화됩니다. 하지만 SubDTO [1] .Id, SubDTO [2] .Id (첫 번째 것은 아닙니다!) 확인란을 선택하면 SubDTO가 null로 유지됩니다. 내가 게시 된 값을 (방화탄을 사용하여) 검사하고 그들은 게시됩니다! 이것은 기본 모델 바인더의 버그이거나 뭔가 빠져있을 수 있습니다.
조치 코드도 게시 할 수 있습니까? – Lazarus
ok done - ps를 참조하십시오. thanks – cs0815
모델 바인더는 반환 값에서 객체의 속성 이름과 일치하는 값을 시도합니다. – Lazarus