2009-11-09 5 views
2

엔터프라이즈 라이브러리 유효성 검사 응용 프로그램 블록 (VAB)은 ASP.NET 및 WCF와 통합됩니다.WCF와 ASP.NET간에 엔터프라이즈 라이브러리 유효성 검사 응용 프로그램 유효성 검사 결과를 통합하는 방법은 무엇입니까?

WCF에서 만든 ValidationResults를 ASP.NET과 통합하는 방법이 있습니까?

ASP.NET 웹 페이지는 WCF 서비스를 호출합니다. WCF 서비스는 VBA를 사용하여 데이터의 유효성을 검사하고 FaultContract를 통해 유효성 검사 정보를 반환합니다. ASP.NET 페이지에서 결과를 가져 와서 일부 오류 메시지를 표시 할 수 있습니다. 그러나 일반적인 방법은 오류가있는 입력란 (예 : 인라인 메시지 또는 별표)을 표시하는 것입니다. 이러한 접근법의 대부분은 유효성 확인 결과를 대조군 또는 유효성 확인자와 관련 지을 수있는 것으로 보인다.

나는 해결책이 없다고 생각하지만 누구나이 일을하고 그들의 접근 방식이 무엇인지 궁금합니다.

답변

3

해결 방안이 없으며 게시 된 답변이 없으므로 구현 한 내용을 공유합니다. 나는 그 접근법을 좋아하지 않지만 그것은 나를 위해 일하고있다.

개요

DataContract이 확인되는 컨트롤의 클라이언트 ID에 개체에 ASP.NET 페이지 속성 간의 매핑을 채우는 데에 대한 기본적인 접근 방식입니다. 유효성 검사 오류가 발생하면 ClientId는 FaultContract의 일부로 서비스에서 asp.net 페이지로 다시 반환됩니다. 그런 다음 FaultException의 세부 사항이 추출됩니다. ASP.NET 페이지는 오류를 일으킨 컨트롤의 ClientId를 가져오고 적절한 동작을 취할 수 있습니다 (예 : 컨트롤 모양 및 느낌 변경 또는 유효성 검사기의 텍스트 설정). 세부

DataContract 개체의 모든

는 사전을 노출하는 기본 클래스에서 상속합니다. 이 사전은 개체 속성을 ASP.NET 컨트롤에 매핑하는 데 사용됩니다. Dictionary에서 키는 DataContract 개체의 속성 이름이고 값은 컨트롤의 ClientId입니다. 서비스를 호출하기 전에 클라이언트는 사전을 DataContract 개체에 첨부해야합니다.

ValidationResult를 Enterprise Library에서 만들면 유효성이 검사 된 개체 인 Target이라는 속성이 포함됩니다. 또한 ValidationResult에는 유효성이 확인 된 대상 객체의 속성 이름 인 key라는 속성이 포함되어 있습니다. ValidationResult 키는 서비스를 호출하기 전에 ASP.NET 페이지에 설정된 Dictionary의 키이기도합니다.

ValidationResult 키를 사용하면 ASP.NET 제공 정보 (ClientId)를 ValidationResult 대상에서 추출 할 수 있습니다. 이 정보는 ValidationResult의 태그로 추가됩니다. 불행하게도, Tag는 읽기 전용 속성이므로 새 ValidationResult를 만들고 태그를 생성자에 전달하여 설정해야합니다.

그런 다음 ValidationResults 컬렉션은 우리가 사용해야하는 기존의 CustomValidationResults 컬렉션 (ValidationResult와 비슷 함)으로 변형됩니다. 그런 다음 CustomValidationResults가 사용자 정의 ValidationFault에 추가되고 FaultException이 발생합니다.

그런 다음 ValidationFaults는 ASP.NET 페이지의 FaultException에서 추출됩니다. ValidationFault에는 오류와 관련된 컨트롤의 ClientId가 포함되어 있으므로 페이지는 메시지가 적합하다고 판단되면 메시지를 표시하도록 선택할 수 있습니다.

관련 문제