2011-02-11 2 views
3

우리는 빠른 프로젝트 (CRUD 형식)를 함께 던지고 뷰 모델을 건너 뛰고 EF 엔티티를 컨트롤러 및 뷰에서 직접 사용하기로 결정했습니다. 이후이 접근 방식에 익숙하지 않기 때문에 유효성 검사를 처리하는 것에 대해 혼란스러워합니다.MVC 컨트롤러/뷰에 사용되는 EF 객체에 유효성 검사를 연결 하시겠습니까?

예를 들어, DB 필드의 길이는 25입니다. 내보기에서 유효성 검사 제약 조건으로 전송할 수있는 방법은 무엇입니까? 중간 모델을 사용했다면 모델 속성에 속성을 첨부하면 작동합니다. EF 객체를 직접 사용하면 어떻게 될까요? 감사.

답변

7

Ef 생성 클래스에서 MetadataType 특성을 사용하여 수행 할 수 있습니다. EF는 부분 클래스를 생성합니다. 그래서 그것들은 확장 될 수 있고 속성이 추가 될 수 있습니다. 그런 다음 멤버 장식을 할 수있는 다른 "버디 클래스"를 작성할 수 있습니다. 예 :

+0

고맙습니다. 이 정보에 대한 링크가 있습니까? 감사! –

+0

관련 정보를 제 답변에 포함 시켰습니다. –

+0

추가하기 만하면됩니다. 그것은 속성 이름에 public visibility modifier를 추가하는 것 같습니다. 나는 그것을 제거하고 왜 그것이 더 이상 일하지 않았는지 궁금해하는 견과류를보고 깜빡. 감사! –

0

가장 쉬운 작업은 System.ComponentModel.DataAnnotations anmespace에있는 DataAnnotations 특성을 사용하는 것입니다.

MVC는이를 존중하며 실패 할 경우 ModelError 컬렉션을 채 웁니다. 예제의 경우 해당 네임 스페이스에 using 문을 추가 한 다음

[StringLength(25)] 

의 속성을 플래그로 지정하고 하루로 지정하면됩니다.

0

'친구'메타 클래스를 부분적으로 사용하고 유효성 검사 속성으로 장식해야합니다.

[MetadataType(typeof(FooMetadata))] 
public partial class Foo {} 

public class FooMetadata 
{ 
    //apply validation attributes to properties 
    [Required] 
    [Range(0, 25)] 
    [DisplayName("Some Neato Property")] 
    public int SomeProperty { get; set; } 
} 

자세한 내용은 MSDN에이 링크를 참조하십시오 : 예를 들어

, 당신의 기업이 '푸'이었다라고

Customize Data Field Validation in the Model

건배.

관련 문제