2009-06-04 3 views
0

하위 개체를 포함하는 몇 가지 다른 List 속성이있는 개체가 있습니다.MVC에서 객체의 여러 인스턴스를 임시 객체에 추가하는 것을 어떻게 관리합니까?

저는 사용자가 부모 개체의 새 인스턴스를 만드는 새보기에서 이러한 자식 개체를 선택하고 추가하는 가장 좋은 방법을 고민하고 있습니다.

예를 들어, 사용자에게 새 프로젝트를 만들 수있는 양식을 제공하는 "새"ViewPage와 Project 클래스가 있다고 가정합니다. 이 양식에서 사용자는 기본 속성에 대한 데이터를 제공 할 수 있으며 (아무런 문제가 없음) 사용자가이 새 프로젝트에 ProjectExpense 개체를 추가 할 수있는 영역이 있습니다. 각 프로젝트 비용에 대해 사용자는 비용 범주 즉, 광고 항목 값 (아마도 수량)을 선택합니다. 사용자가 하나 이상의 경비를 추가하고자 할 때 우리는 그가 작업 할 새로운 라인을 제공하는 멋진 작은 jQuery 행 복제를 제공함으로써 그렇게 할 수 있습니다.

내가 비틀 거린 부분은 양식을 제출할 때 작성 작업으로 데이터를 다시 가져 오는 방법입니다. 지금 당장 알 수없는 ProjectExpense 행을 파싱하려고합니다. 고통 스럽습니다. 선을 추가 할 때마다 ProjectExpense 객체를 서버의 Session 또는 TempData 가방에 저장하는 것이 더 좋은 옵션 인 것 같습니다. 그런 다음 작업에서 우리는 그 가방을 붙잡고 부모 개체에 부착하고 정상적으로 유지합니다.

다른 사람들이 이러한 종류의 작업을 수행하는 방법에 대한 의견이 있으십니까?

답변

0

이러한 새로운 값 행을 IList에 쉽게 바인딩 할 수 있습니다. Haacked는 a post about such possibility을 가지고 있지만 약간 오래된 것입니다. 그러나 주석에는 유용하고 최신 정보가 많이 있습니다. 내 의견으로는 게시물이 jeloff (의견에서 제공 한 링크)의 게시물과 비교하여이 가능성을 훨씬 잘 설명합니다. 그래서 ProjectExpense 행을 추가하여 컨트롤러 메서드에서 적절한 이름을 설정하고 IList 바인딩을 사용하는 JS 코드를 변경해야합니다. 일부 사용자 정의 JS에서는 모든 값을 수집하여 숨겨진 필드에 추가하는 등의 작업을 수행 할 필요가 없습니다. 이 기능은 이미 기본적으로 작동합니다. 업데이트 : 이것에 관해 하나 더 좋은 링크를 찾았습니다. http://blog.codeville.net/2008/12/22/editing-a-variable-length-list-of-items-in-aspnet-mvc/

+0

답변을 선택하는 데 지연되어서 죄송합니다. 내 자신의 의견 외에도,이 솔루션은 실제로 내 요구에 가장 잘 맞았습니다. 이 문제를 해결하기 위해 다른 문제가 있었지만이 방법으로 바인딩하기 시작할 때까지 이전에 알지 못했던 도메인 문제를 강조했습니다. – nkirkes

0

이 내 머리 위로 떨어져 내가 여기 AJAX에 대한 단순한 서버 왕복 생각하지만 아니에요 왜 페이지의 두 가지 형태를 가지고 있지?

첫 번째 양식은 '새'프로젝트 작업에 게시되고 두 번째 양식은 프로젝트 비용 작성 작업에 게시됩니다.

모델의 명확성과 청결성을 위해 부분 뷰에 넣을 수도 있습니다.

프로젝트를 만들기 전에 비용을 생성하는 경우 데이터 저장소에 보관되지 않은 임시 개체를 만들면됩니다. 프로젝트 저장시에만 저장하십시오. 이것은 올바른 디자인 결정이며 그것을하기 전에 좋은 생각을 가지고 있습니다.

AJAX로이 작업을 수행하는 경우 문제가 더 간단합니다. 전체 개체의 JSON 표현을 유지 관리 한 다음 다시 역 직렬화 및 처리를 위해 서버에 게시 할 수 있습니다.

희망이 있습니다.

관련 문제