2011-12-08 1 views
1

내가 읽은 많은 내용 중에서 항상 데이터 주석을 사용하여 유효성을 검사하려는 것 같습니다. 자바 스크립트 개발자이기 때문에 자동 생성 JavaScript에 대해 항상 좋지는 않습니다.DataAnnotations에서 자동 생성 된 jQuery 코드가 안티 패턴인가요?

커뮤니티에서이 문제를 해결하고 싶습니다. 먼저 설명해 드리겠습니다. 만약 내가

단지의 평평하고 단순한 형태는 다음과 같이 클래스에 그지도를 텍스트 상자 :

public class Person 
    { 
    [Required] 
    public string FirstName { get; set; } 

    [Required] 
    public string LastName { get; set; } 

    [Required] 
    public DateTime DateOfBirth { get; set; } 

    [Required] 
    public string State { get; set; } 
    } 

보기가 매우 간단 (textboxfor 년대 또는 editfor의의 무리)가 될 수 있으며, 우리가 강력하게 입력 할 수 있습니다 Person 객체에 대해. 클라이언트 측 유효성 검사를 사용하도록 설정 한 경우 jQuery 코드가 자동으로 생성되므로 클라이언트 측 유효성 검사를 위해 코드를 쓸 필요가 없습니다. "그냥 작동합니다."그리고 이처럼 많은 양식 필드를 다루는 경우에는이 방법을 사용하는 것이 합리적입니다.

40 개가 넘는 양식 필드 (드롭 다운, 다중 선택 상자, 체크 박스 등)가있는 거대한 양식 (IRS 또는 인트라넷 사이트라고합시다)을 처리 할 때 매우 혼란 스럽습니다.

  • 그 형태가 다른 형태의 가시성을 트리거 양식 필드를 할 수 : 또한, 당신은 JS 당신이 당신의 C#에 너무 많이 의존 할 것이다 쓰기 위치를 자신의 유효성 검사기를 쓰기로 이어질 것입니다 이러한 시나리오에 걸쳐 올 수 전지. 당신이 [필수]로 설정되어 생년월일 (DateOfBirth) 필드가있는 경우
  • 이있다 가 클릭하면, 그것은 수있는 버튼이 될 수 그것을를 unrequired
  • 당신은 새로운 검사기를 만들 수있는 디자이너와 병렬로 작업 할 수
  • C# 코드 (또는 데이터 주석 등)
  • 페이지에서 다른 유효성 검사 프레임 워크로 작업 할 수 있습니다. 이러한 모든 가능성을

, 그것은 바로 HTML 확인 어떤 (데이터 주석에서) 자바 스크립트를 생성 자동 터닝 ClientSideValidation을 사용하고,보다, 어떤 C#을 의존하지 않고 다른 JQuery와 유효성 검사기 플러그인을 사용하지 않는 말이 요소가 존재하며 선택할 수 있습니다.

여러분이 동의합니까? 내가 뭘 놓치고 있니?

답변

2

누락 된 부분은 "자동 생성 된"자바 스크립트가 없다는 것입니다. 클라이언트 측 유효성 검사는 jquery 유효성 검사 및 html 데이터 속성을 사용하므로 javascript가 생성되지 않습니다. 어댑터 클래스를 사용하여 속성을 구문 분석하고이를 jqv에 제공합니다. 어댑터는 자동으로 생성되지 않습니다.

데이터 주석은 매우 유연하지 않지만 jquery 또는 코드 자동 생성과는 아무런 관련이 없다는 것이 맞습니다. 이는 데이터 주석이 정적이며 컴파일 타임에 생성되기 때문입니다.

이것은 문제의 일부일뿐입니다. 클라이언트 측 유효성 검사를 해제하더라도 수동으로 수행하는 클라이언트 측 유효성 검사와 상관없이 서버 측 유효성 검사를 처리해야합니다. 클라이언트가 보낸 데이터를 신뢰하지 않으므로 클라이언트 측 유효성 검사 만 수행 할 수는 없습니다. 서버 측에서 작동하는 솔루션이 필요하며 클라이언트 측에서도 잘 작동 할 수 있습니다.

fluent validation과 같은 것을 사용하면 런타임에 유효성을 제어 할 수 있습니다.가능하면 클라이언트의 jquery 유효성 검사와도 연결됩니다.

+0

관심을 가져 주셔서 감사합니다. – SaltProgrammer

관련 문제