2011-08-09 9 views
0

ASP.NET MVC 페이지에 상당히 복잡한 형식이 있습니다. 이것은 다음과 같이 작동합니다 ...ASP.NET MVC 다중 순차 게시 - 데이터 채우기가 없음

기본적으로로드 (HTTP 게시 없음)에는 모델에 바인딩 된 두 개의 선택 상자와 제출 버튼이 있습니다.

제출시 (HTTP 게시) 선택 상자의 값을 사용하여 DB에서 일부 데이터를 가져옵니다. 그 데이터는 게시 된 모델 인스턴스에 추가되고 인스턴스는 다른 View (myModelInstance) 호출을 실행하는 데 사용됩니다.

이 시점에서 상황이 좋게 보입니다. 내 선택 상자는 선택된 값을 유지하고 DB 데이터를 기반으로 한 새 요소가 표시됩니다.

데이터를 변경했는지 여부에 관계없이 다른 게시물을 지금 작성하면 선택 상자에서 선택한 원래 값은 내 컨트롤러의 Action 메서드 내에서 null이지만 DB 데이터 텍스트 상자의 값은 아닙니다.

정말 다음 예에서와 같이 ...를 IEnumerable 내에있는 내 모델의 일부를 편집 할 수있는 면도기 내의 인덱스 표기법을 사용하고 여기에 특별한 일을하고있는 유일한 것은 ...

@for (int i = 0; i < ViewBag.SomeArbitraryNumber; i++) 
{ 
    <input type="text" name="myModel.MyEnumerable[@i].MyValue" 
      value="@(Model.MyEnumerable[i].MyValue)" size="2" /> 
} 

이 색인 표기법은 원래 선택 상자 값이 게시 된 후에 만 ​​사용됩니다.

업데이트 : 여기에서 주요 기여자는 특수 색인 표기법 인 것으로 보입니다. 만약 내가 그것을 제거, 잘 작동합니다. 또한 두 개의 선택 상자와 일치시키기 위해 추가 숨겨진 필드를 포함하고 해당 필드에 대해 색인 표기법을 사용하면 두 번째 게시물이 작동합니다.

답변

0

브라우저가 원래 선택 상자를 캐싱하고 두 번째보기로 채워지지 않았습니까? MVC에서는 선택 상자가 표시 될 때마다 선택 상자를 채워야합니다. Webforms에서는 viewstate가 자동으로이 작업을 수행하지만 MVC에서는 입력 된 값이 있는지 확인해야합니다.

+0

그래, 표준보기 및 HttpPost보기에서 채우고 있습니다. 나는 또한 근원에서 가치가다는 것을 볼 수있다. 그들은 단지 두 번째 지위의 모델에 수화되는 것 같지 않습니다. – ctorx