2011-05-09 3 views
0

저는 조직을위한 매우 크고 복잡한 ASP.NET 2.0 Webforms 기반 비즈니스 제품 군의 MVC 프로토 타입을 연구 중입니다. 기존 응용 프로그램에 포함 된 기능 중 하나는 사용자가 Webforms UI에서 변경 한 사항이있는 경우 결과 집합을 저장하기 위해 데이터베이스에 도달한다는 것입니다. 웹 앱에는 "사용자가 변경 한 경우"를 추적하기 위해 내장 된 전체 레이어가 있습니다.내 ASP.NET MVC 응용 프로그램에서 내 도메인 모델의 속성이 변경되었는지 어떻게 확인할 수 있습니까?

ASP.NET MVC 내에 어떤 속성이보기에서 사용자가 변경했는지 확인하는 기능/기능이 있는지 궁금합니다. 아이디어는 간단합니다. 사용자가보기를보고 일부 변경 사항을 적용하고 "저장"을 누르십시오. 게시물을 승인하는 컨트롤러는 모델의 상태가 사용자에 의해 변경되었는지 여부를 파악하고 상태가 변경된 경우에만 모델을 저장해야합니다.

의견이 있으십니까?

추신 : mvc-2 및 mvc-3을 프로토 타입으로 태그 지정합니다. 저는 현재 MVC 2에서이 것을 배우고 있습니다 만, 우리의 요구에 더 잘 맞으면 빨리 MVC 3으로 옮길 것입니다!

답변

1

ASP.NET MVC 내에보기에서 사용자가 변경 한 속성을 확인하는 기능이 있는지 궁금합니다.

아니요, MVC에서는이 작업을 수행 할 수 없습니다. WebForms는 뷰 상태에 필드의 원래 값을 포함시킴으로써이를 수행하지만 핵심 MVC에서 HTTP의 무국적 상태를 수용하는 데는이 작업을 수행하지 않습니다.

(보기) 모델 유형이 정규화 된 경우이 작업을 수행하기 위해 스 캐 폴딩을 구성 할 수 있습니다 (더 많은 유형을 사용하면 더 많은 이점이 있습니다). 각 뷰 모델 유형이 데이터베이스에 대한 업데이트 전에 모델 유형을 업데이트 할 때 변경이 있었는지 여부를 판별하여 업데이트를 바이 패싱하는 경우이 프로토 타입을 프로토 타이핑했습니다.

+0

실제로 우리는 이것을 추적하기 위해 ASP.NET의 viewstate/post 데이터 컬렉션을 사용하지 않습니다. 우리는 자신의 상태를 추적하는 거의 모든 것 (텍스트 상자, 콤보 등)에 대한 사용자 지정 컨트롤을 가지고 있습니다. 이 양식은 변경 사항이 있는지 파악하기 위해 컨트롤을 반복합니다. 스 캐 폴딩의 세부 사항을 살펴 보 겠지만 일반적인 고수준 개요는 환영받을 것입니다. – Nikhil

+0

@Nikhil : 그리고 그 컨트롤은 원래 값을 어디에 저장합니까? – Richard

+0

우리는 사용자가 변경 한 각 컨트롤에 changedValue 클래스를 추가하는 클라이언트 측 글로벌 프레임 워크를 가지고 있습니다. 컨트롤의 IsDirty 속성은 컨트롤이이 클래스로 끝났는지 여부에 따라 설정됩니다 (각 컨트롤마다 다르게 설정 됨). 사실 몇 가지 컨트롤이 Viewstate의 변경 사항을 추적하지만 대부분이 클래스 경로를 사용합니다. – Nikhil

관련 문제