과제
프론트 엔드 측에서 특정의 조건일때만 input 항목을 생성시켜 입력값을 넘겨 받는데 그 입력 항목이 배열일 경우에는 name값의 순서가 연속성을 가지지 않기 때문에 Model에 바인딩 되지 않는 경우가 있었습니다.
해결방법
각각의 입력 요소인 <input type=”text” name=”Items[0].Name”> 의 앞에 <input type=”hidden” name=”Items.Index” value=”0” /> 를 추가 하는 것으로 비연속적인 index를 가지고 있는 배열 값이라도 정상적으로 Model에 바인딩 되는것을 확인하였습니다.
확인한 MVC버젼은 5입니다.
View (.cshtml 확장자)
<input type="hidden" name="Items.Index" value="0" />
<input type="text" name="Items[0].Name" value="someValue1" />
<input type="hidden" name="Items.Index" value="1" />
<input type="text" name="Items[1].Name" value="someValue2" />
<input type="hidden" name="Items.Index" value="3" />
<input type="text" name="Items[3].Name" value="someValue3" />
<input type="hidden" name="Items.Index" value="4" />
<input type="text" name="Items[4].Name" value="someValue4" />
Model
public class TestModel
{
public List Items { get; set; }
}
public class Item
{
public string Name{ get; set; }
}
참고
MVC3 Non-Sequential Indices and DefaultModelBinder
원글 작성일 2016-12-27
'개발 > ASP.NET' 카테고리의 다른 글
CSV 파일 작성 (0) | 2019.01.23 |
---|---|
ASP.NET http접속을 https로 리다이렉트 시키기 (0) | 2019.01.23 |
메일 수신과 삭제 with OpenPoP.NET (0) | 2019.01.21 |
log4net의 버젼 차이에 따른 문제 해결 (0) | 2019.01.21 |
timestamp/DateTime에서 현재시간을 기준으로 경과시간을 취득 (0) | 2019.01.21 |
댓글