ASP.NET MVC 비연속의 Array 요소를 Model에 바인딩 시키기

ASP.NET MVC 비연속의 Array 요소를 Model에 바인딩 시키기

과제

프론트 엔드 측에서 특정의 조건일때만 input 항목을 생성시켜 입력값을 넘겨 받는데 그 입력 항목이 배열일 경우에는 name값의 순서가 연속성을 가지지 않기 때문에 Model에 바인딩 되지 않는 경우가 있었습니다.

해결방법

각각의 입력 요소인 <input type=”text” name=”Items[0].Name”> 의 앞에 <input type=”hidden” name=”Items.Index” value=”0” /> 를 추가 하는 것으로 비연속적인 index를 가지고 있는 배열 값이라도 정상적으로 Model에 바인딩 되는것을 확인하였습니다.

확인한 MVC버젼은 5입니다.

View

<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<Item> Items { get; set; }
    }

    public class Item
    {
        public string Name{ get; set; }
    }

参考サイト

MVC3 Non-Sequential Indices and DefaultModelBinder

Pie's Tech Note

생계형 개발자의 메모장

comments powered by Disqus

    rss facebook twitter github youtube mail spotify instagram linkedin google google-plus pinterest medium vimeo stackoverflow reddit quora