2012-03-04 3 views
1

Html.ValidationMessageFor() 메서드를 사용하여 유효성 검사 메시지를 폼에 표시하고 있습니다. 대부분의 양식 필드에서 몇 가지 필드를 제외하고 적절한 오류 메시지가 나타납니다. 하나는 양식의 텍스트 상자 인 '생년월일'필드이고 다른 하나는 '미국'주마다 드롭 다운되는 '주'필드입니다. 이 두 필드에 대해 'DateOfBirth 필드가 필요합니다.'라는 메시지가 표시됩니다. '상태 필드가 필요합니다.'Html.ValidationMessageFor() 메서드의 동작이 일관되지 않음

나는 리플렉터를 해고하고 Html.ValidationMessageFor() 정적 메소드의 코드를 보았는데,이 메소드가이 메시지를 추가하는 것처럼 보이지 않았다.

이 메시지의 출처는 어떤 것이 있습니까? & 수정 방법은 무엇입니까?

업데이트 추가 된 모델 코드 ... 기본적으로 CSLA의 축소 버전을 사용하고 있습니다. 비즈니스 규칙은 클래스가 만들어 질 때 클래스에 추가되고 한 번 실행되면 적절한 메서드가 호출됩니다. 기본적으로 'rule.ErrorMessage'는 ValidationMessageFor가 오류를 나열 할 때 표시되어야합니다. DateofBirth & State 속성을 제외한 다른 모든 속성에 적용됩니다.

모델 코드

속성 :

public Guid UserId { get; set; } 
public Guid PatientId { get; set; } 
public string FirstName { get; set; } 
public string LastName { get; set; } 
public string Email { get; set; } 
public string Phone1 { get; set; } 
public string Phone2 { get; set; } 
public string Address1 { get; set; } 
public string Address2 { get; set; } 
public string City { get; set; } 
public States State { get; set; } 
public string Zip { get; set; } 
public DateTime DateOfBirth { get; set; } 
public string EmergencyName { get; set; } 
public string EmergencyPhone { get; set; } 
public string EmergencyRelation { get; set; } 

비즈니스 규칙 :

this.AddValidation(new DataValidation("DateOfBirth", "DateOfBirthRequired", 
    delegate(DataValidation rule) 
    { 
     rule.ErrorMessage = "required"; 
     return ((DateOfBirth >= new DateTime(1900, 1, 1)) && (DateOfBirth < DateTime.Today)); 
    }, DataAction.Update | DataAction.Insert)); 
this.AddValidation(new DataValidation("State", "StateRequired", 
    delegate(DataValidation rule) 
    { 
     rule.ErrorMessage = "required"; 
     return (State != States.Unknown); 
    }, DataAction.Insert | DataAction.Update)); 
+0

모델은 어떻게 생겼습니까? 그 소스 코드를 제공 할 수 있습니까? – JasCav

+0

모델에서 일부 소스를 추가했습니다. – Skadoosh

답변

0

내가 할 필요가 모두에 언급 한 바와 같이 널 (NULL)로 속성을 설정하는 것이 었습니다 this post.

관련 문제