2012-03-29 3 views
0

동적 컨텐츠에서 MVC3에 html을 생성해야합니다. 내 시나리오는 사용자 및 상황에 따라 표시되는 html 필드를 변경할 수있는 뷰를 만들어야한다는 것입니다. 필드의 가능한 범위는 사용할 수 있도록 검색 할 준비가 될 때까지 알려지지 않으며 변경할 수 있습니다. 이 기본 기능은 MVC에서 매우 쉽습니다. 그러나, 나는 내 문제가 발생하는 곳에 눈에 잘 띄지 않는 클라이언트 측 유효성 검사를 사용하려고합니다.데이터 주석이없는 MVC3 눈에 거슬리지 않은 유효성 검사

이것은 시나리오입니다. 모델에 복잡한 유형의 목록이 있습니다. 복합 유형 인스턴스는 작성해야하는 html 필드에 대한 메타 데이터를 저장합니다. 예를 들어 복합 유형에는 생성 할 html 요소 유형을 알려주는 DataType 문자열 속성이 있습니다. 텍스트 상자의 입력 요소는 "텍스트", 확인란의 입력 요소는 "확인란", 선택 요소는 "선택"등이 있습니다. 복잡한 유형은 Readonly, IsRequired, Value, Regex, MinLength, MaxLength 등과 같은 속성을 가지고 있습니다. 여기에는 HTML 요소 범위를 만들고 그 요소에 대한 유효성 검사가 필요한 모든 것이 포함되어 있습니다.

그래서 복잡한 유형의 목록이 컨트롤러의 모델에 삽입 된 다음 뷰를 호출합니다. 뷰는 목록의 각 복합 유형에 대한 복합 유형의 설정을 고려하여 적절한 html 요소를 표시해야합니다. 복잡한 유형을 관리하기 위해 새로운 도우미를 작성하거나 복소수 유형의 데이터 유형을 점검하고 해당 도우미를 사용하는보기에서 루프에 switch 문을 포함 시켜서 수행 할 수 있습니다. 여태까지는 그런대로 잘됐다.

그러나 JavaScript 클라이언트 측의 눈에 띄지 않는 속성을 만들지 않고도 클라이언트 측 유효성 검사를 사용하려는 경우 문제가 발생합니다. 기존의 MVC 코드를 사용하여 데이터 주석을 사용하지 않고 눈에 거슬리지 않는 클라이언트 측 유효성 검사를 만들 수있는 방법이 있습니까?

예. 기존 ModelMetadataProvider DataAnnotationsModelMetadataProvider를 덮어 쓰고 내 자신의 도우미에서 새 메서드를 호출합니다.

위의 시나리오를 달성하는 가장 좋은 방법은 무엇입니까?

+0

@MystereMan에 동의합니다. 또한, 귀하의 질문에 약간의 불완전하거나 오히려 요점을 보일 것입니다. MVC는 이미 눈에 거슬리지 않는 "클라이언트 측"검증 기능을 내장하고 있습니다. 최근에 비슷한 일을했습니다. 나는 ModelMetadataProvider와 새로운 html 템플릿을 만들어 내 HTML에 "동적 인"모델을위한 동적 HTML 모델을 만든다. 그래, 맞다. 동적 모델이지만, 여전히 그 속성을 처리하기 위해 내 자신의 자바 스크립트 코드를 작성해야한다. –

+0

질문 끝에서 "데이터 주석을 사용하지 않고 눈에 잘 띄지 않는 클라이언트 측 유효성 검사를 만들기 위해 기존 MVC 코드를 사용할 수있는 방법이 있습니까?" 즉, 데이터 주석없이 직접 자바 스크립트 코드를 작성하지 않고도 눈에 잘 띄지 않는 밸리 에이션을 구현할 수 있습니다. 우리 둘 다 새로운 ModelMetadataProvider를 구현하는 것과 동일한 솔루션을 만들었거나 제 경우 AssociatedMetadataProvider에서 상속받은 것처럼 보입니다. 볼트가 정확히 정렬되지 않았기 때문에 이미 설치된 휠을 복사 할 필요가 없다면 좋을 것입니다! –

+0

수 없습니다. 이것이 작동하는 방식이며, 불행히도 작업이 완료되어야합니다. –

답변

0

정확하게 "동적 MVC3 html"을 어떻게 만듭니 까? 실제보기를 사용하지 않고 html을 작성하고 있다는 것을 의미합니까? 유효성 검사는 모델 바인더 (html이 아닌)에서 서버 측에서 처리되므로 동적 HTML은 차이를 만들지 않습니다. 클라이언트 쪽에서는 작동시키기 위해 data- * 속성을 추가하기 만하면됩니다.

HTML의 컨텍스트를 제공하지 않았으므로 원하는 것을 성취 할 수있는 방법을 알려 드릴 수 없습니다.

관련 문제