두 필드에 걸쳐있는 전화 번호의 유효성을 검사하려고합니다.MVC3 단일 필드로 여러 필드 유효성 검사
첫 번째 필드에는 지역 번호가 표시되고 다른 필드에는 나머지 전화 번호가 표시됩니다.
요구 사항은 다음과 같습니다 그들은 둘 필요
- .
- 숫자 여야합니다.
- 지역 번호 필드는 최대 6 자리 여야하며 전화 번호 필드는 최대 10 자리 여야합니다.
두 필드 모두에 하나의 메시지가 표시되어야합니다. 예를 들어, 지역 번호가 누락되었지만 전화 번호가 제공된 경우 두 개의 필드가 모두 "전화 번호를 입력하십시오."라고 표시된 후에 단일 메시지가 표시되어야합니다..
public class Customer
{
//...other fields here
public string AreaCode { get; set; }
public string PhoneNumber { get; set; }
}
나는 정규 표현식 또는 simlar 단일 필드로 전화를 구현할 수 없습니다 :에
나는 현재이 모델은 유사하다.
에 비슷한 질문이 있습니다이 here (그리고 또한 가지 유사한 here에) 대답은 속성에서 요구되는 필드의 이름을 지정합니다 (MultiFieldRequired
라는 이름의이 경우) 사용자 정의 유효성 검사 속성을 만드는 것이 좋습니다 곳 . 그런 다음 유효성 검사 속성은 리플렉션을 사용하여 오류가있을 경우보고 할 다른 속성 값을 확인합니다.
예를 들어, 위의 모델의 경우 내가해야한다고 생각 :
public class Customer
{
//...other fields here
public string AreaCode { get; set; }
[MultiFieldRequired("AreaCode", "PhoneNumber", ErrorMessage="Please enter a phone number")]
public string PhoneNumber { get; set; }
}
는 그러나, 나는 제공된 솔루션과 함께 작은 문제 건너왔다. 사용자 지정 유효성 검사 특성에 의해 반환 된 오류는 데이터 주석이있는 필드 (PhoneNumber는 위의 모델 임)에 대해서만보고됩니다. 따라서 AreaCode가 사용자에 의해 입력되지는 않았지만 PhoneNumber가 제공되면 오류는 AreaCode가 아닌 PhoneNumber 필드에 대해보고됩니다. 또한 Visual Studio 인터넷 프로젝트와 함께 제공된 css를 사용하는 경우 제공된 PhoneNumber 필드가 빨간색으로 표시되고 유효하지 않은 지역 코드는 흰색 (오류 표시 안 됨)으로 표시되므로 약간 이상하게 보입니다.
누구나이 색상 표시 동작을 교정하는 방법이나 필드가 잘못되면 (필드에 올바른 색상으로 표시) 오류 메시지를보고 할 수있는 방법이 있습니까?
미리 감사드립니다.
구현 예가 여기서 어떻게 작동하는지 잘 모르겠습니다. 이 작업을 수행 할 수있는 유일한 방법은 '[MultiFieldRequired (새 문자열 [3] { "Phone1", "Phone2", "Phone3"}, ErrorMessage = "Phone # required와 같은 속성 중 하나 위에 속성을 추가하는 것입니다. ")]'------ 코드는 배열 만 받아 들인다. 사람들이 쉼표로 구분 된 문자열을 사용하고 작동하는 방식을 잘 모르겠습니다. – ganjeii
나는 동의하고, 문법을 컴파일하지 못하게하고 간제가 옳다. – Gaurav123