데이터 주석을 사용할 때 사용자 정의 편집기 템플릿을 어떻게 사용할 수 있습니까?

제임스 소프

간단한 모델이 있습니다.

public class MyViewModel {
    public MyCustomType EmailAddress {get; set; }
}

특정보기에서이 속성을 편집 할 수 있도록 입력 상자를 표시해야합니다. 이상적으로는 표준 @Html.EditorFor구문 을 계속 사용하고 싶어서 /Views/Shared/EditorTemplates/MyCustomType.cshtml템플릿을 만들었습니다 .

@model MyNamespace.MyCustomType
@Html.TextBoxFor(m => m.SomeStringProperty, new { @class = "form-control" })

IModelBinder이 입력을 MyCustomType제출할 때 다시 읽는 사용자 지정도 있습니다 .이 모든 것이 잘 작동합니다.

그러나 속성 이름에서 알 수 있듯이이 속성에는 이메일 주소가 포함되어 있습니다. 표준 데이터 주석 속성을 사용하여 표시 한 다음 필요한 경우 입력 상자 MyCustomType.cshtml를 렌더링하는 데 사용하도록 업데이트하고 싶습니다. <input type="email">모든 용도 MyCustomType가 이메일 주소 인 것은 아니므로 표준 속성을 사용하여 표시하고 싶습니다. 그 자체로. 그렇게 할 때 :

public class MyViewModel {
    [EmailAddress]
    public MyCustomType EmailAddress {get; set; }
}

내 사용자 지정 템플릿은 더 이상 사용되지 않습니다. 대신 표준 EditorFor코드 를 사용하는 것으로 되돌아 가고 기본적 으로 특정 속성을 가져 오는 사용자 지정 편집기 템플릿이 아닌 내부 .ToString()버전 만 표시합니다 .MyCustomType<input>

표준 데이터 주석 속성을 추가하기 위해 모델 만 요구하면서 내 사용자 정의 편집기 템플릿 기능을 사용할 수있는 방법이 있습니까?

크리스 프랫

데이터 주석은 편집기 템플릿의 경우 항상 유형보다 우선합니다. 몇 가지 옵션이 있습니다.

  1. 사용자 지정 "EmailAddress"특성을 만듭니다. 기술적으로는 EmailAddressAttribute실제로 추가하지 않고도 서브 클래스 만 할 수 있다고 생각합니다 . 그러나 사용자 정의 속성의 이름을 사용하면 다른 편집기 템플릿을 사용할 수 있습니다.

  2. 계속해서 EmailAddress.cshtml편집기 템플릿을 사용 하되 내부로 분기하십시오. 다음 MyCustomType에서 상속 한다고 가정합니다 String.

    @model String
    @if (Model is MyCustomType)
    {
        ...
    }
    else
    {
        ...
    }
    
  3. 하지만 가장 쉬운 방법은 템플릿을 지정하는 것입니다. 자동은 아니지만 추가 작업이 필요하지 않습니다.

     @Html.EditorFor(m => m.EmailAddress, "MyCustomType")
    

    그러면 MyCustomType.cshtml기본값 대신 로드 됩니다 EmailAddress.cshtml.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Microsoft VBA 편집기에서 사용자 정의 색상을 어떻게 사용할 수 있습니까?

분류에서Dev

prop에서 템플릿 리터럴을 사용할 때 줄 바꿈을 어떻게 할 수 있습니까?

분류에서Dev

사용자 정의 플롯 제목을 사용할 때`plotly.subplots`의 주석이 끊어집니다.

분류에서Dev

keras에서 훈련 할 때 기울기 계산을 어떻게 사용자 정의 할 수 있습니까?

분류에서Dev

특정보기를 선택할 때 수명주기 방법을 어떻게 사용할 수 있습니까?

분류에서Dev

Shopify : 테마 편집기에서 사용자 지정 템플릿을 편집 할 수있게 만드는 방법은 무엇입니까?

분류에서Dev

데이터 바인딩을 사용할 때 어떻게 문자열을 포맷 할 수 있습니까?

분류에서Dev

C #에서 사용자 지정 직렬화를 사용할 때 XML 요소의 이름을 어떻게 제어 할 수 있습니까?

분류에서Dev

SED 스트림 편집기를 사용할 때 문자열의 특수 문자를 어떻게 이스케이프 할 수 있습니까?

분류에서Dev

템플릿 매개 변수가 std :: vector 일 때 사용되는이 메서드의 템플릿 버전을 어떻게 만들 수 있습니까?

분류에서Dev

TFS 2017을 사용하여 사용자 지정 빌드 정의 템플릿을 어떻게 편집합니까?

분류에서Dev

Doctrine ORM을 사용할 때 반환되는 데이터를 어떻게 사용자 정의합니까?

분류에서Dev

C ++에서 템플릿에 정의 된 유형을 어떻게 사용할 수 있습니까?

분류에서Dev

Cassandra가 비정규 화 된 데이터의 사용을 용이하게한다면 사용자는 불일치를 만들지 않고 어떻게 편집 할 수 있습니까?

분류에서Dev

데이터 프레임의 열을 브로드 캐스팅 할 때 문자열에서 split ()을 어떻게 사용할 수 있습니까?

분류에서Dev

Linux 터미널 / "man"페이지의 전체 내용을 텍스트 편집기 (이 경우 gedit)에 어떻게 복사 할 수 있습니까?

분류에서Dev

Liquid.NET 템플릿의 변수 데이터로 JSON 문자열을 어떻게 사용합니까?

분류에서Dev

사용자 정의 인터페이스 배열의 배열을 어떻게 정의 할 수 있습니까?

분류에서Dev

사용자 지정 어댑터를 만들 때 활동에만 사용할 수 있습니까? 아니면 조각을 사용할 수 있습니까?

분류에서Dev

템플릿을 사용할 때 Lvalue의 유형을 결정할 수 있습니까?

분류에서Dev

HTML 템플릿을 사용하여 어떻게 출력 할 수 있습니까?

분류에서Dev

템플릿 매개 변수의 멤버 유형을 어떻게 사용할 수 있습니까?

분류에서Dev

템플릿 리터럴을 사용하여 동적 인수를 어떻게 전달할 수 있습니까?

분류에서Dev

SignalR을 사용할 때 파이프에서 특정 HttpModule을 어떻게 제거 할 수 있습니까?

분류에서Dev

어떻게 자바와 불꽃 SQL을 사용하여 데이터 집합의 행의 내용을 인쇄 할 수 있습니까?

분류에서Dev

Web App의 Business Catalyst "편집"템플릿, 사용자가 항목을 "사용"에서 "사용 안 함"으로 변경할 수 있습니까?

분류에서Dev

@Secured는 데이터베이스에서 사용자의 역할을 어떻게 알 수 있습니까?

분류에서Dev

현재 사용자의 이름을 어떻게 표시 할 수 있습니까?

분류에서Dev

사용자의 배경색을 어떻게 사용할 수 있습니까?

Related 관련 기사

  1. 1

    Microsoft VBA 편집기에서 사용자 정의 색상을 어떻게 사용할 수 있습니까?

  2. 2

    prop에서 템플릿 리터럴을 사용할 때 줄 바꿈을 어떻게 할 수 있습니까?

  3. 3

    사용자 정의 플롯 제목을 사용할 때`plotly.subplots`의 주석이 끊어집니다.

  4. 4

    keras에서 훈련 할 때 기울기 계산을 어떻게 사용자 정의 할 수 있습니까?

  5. 5

    특정보기를 선택할 때 수명주기 방법을 어떻게 사용할 수 있습니까?

  6. 6

    Shopify : 테마 편집기에서 사용자 지정 템플릿을 편집 할 수있게 만드는 방법은 무엇입니까?

  7. 7

    데이터 바인딩을 사용할 때 어떻게 문자열을 포맷 할 수 있습니까?

  8. 8

    C #에서 사용자 지정 직렬화를 사용할 때 XML 요소의 이름을 어떻게 제어 할 수 있습니까?

  9. 9

    SED 스트림 편집기를 사용할 때 문자열의 특수 문자를 어떻게 이스케이프 할 수 있습니까?

  10. 10

    템플릿 매개 변수가 std :: vector 일 때 사용되는이 메서드의 템플릿 버전을 어떻게 만들 수 있습니까?

  11. 11

    TFS 2017을 사용하여 사용자 지정 빌드 정의 템플릿을 어떻게 편집합니까?

  12. 12

    Doctrine ORM을 사용할 때 반환되는 데이터를 어떻게 사용자 정의합니까?

  13. 13

    C ++에서 템플릿에 정의 된 유형을 어떻게 사용할 수 있습니까?

  14. 14

    Cassandra가 비정규 화 된 데이터의 사용을 용이하게한다면 사용자는 불일치를 만들지 않고 어떻게 편집 할 수 있습니까?

  15. 15

    데이터 프레임의 열을 브로드 캐스팅 할 때 문자열에서 split ()을 어떻게 사용할 수 있습니까?

  16. 16

    Linux 터미널 / "man"페이지의 전체 내용을 텍스트 편집기 (이 경우 gedit)에 어떻게 복사 할 수 있습니까?

  17. 17

    Liquid.NET 템플릿의 변수 데이터로 JSON 문자열을 어떻게 사용합니까?

  18. 18

    사용자 정의 인터페이스 배열의 배열을 어떻게 정의 할 수 있습니까?

  19. 19

    사용자 지정 어댑터를 만들 때 활동에만 사용할 수 있습니까? 아니면 조각을 사용할 수 있습니까?

  20. 20

    템플릿을 사용할 때 Lvalue의 유형을 결정할 수 있습니까?

  21. 21

    HTML 템플릿을 사용하여 어떻게 출력 할 수 있습니까?

  22. 22

    템플릿 매개 변수의 멤버 유형을 어떻게 사용할 수 있습니까?

  23. 23

    템플릿 리터럴을 사용하여 동적 인수를 어떻게 전달할 수 있습니까?

  24. 24

    SignalR을 사용할 때 파이프에서 특정 HttpModule을 어떻게 제거 할 수 있습니까?

  25. 25

    어떻게 자바와 불꽃 SQL을 사용하여 데이터 집합의 행의 내용을 인쇄 할 수 있습니까?

  26. 26

    Web App의 Business Catalyst "편집"템플릿, 사용자가 항목을 "사용"에서 "사용 안 함"으로 변경할 수 있습니까?

  27. 27

    @Secured는 데이터베이스에서 사용자의 역할을 어떻게 알 수 있습니까?

  28. 28

    현재 사용자의 이름을 어떻게 표시 할 수 있습니까?

  29. 29

    사용자의 배경색을 어떻게 사용할 수 있습니까?

뜨겁다태그

보관