MVC4에서 작업 중이며 Uppercase
속성을 사용하여 모델을 정의하려고합니다. 아이디어는 Uppercase 속성의 존재로 인해 모델 값이 서버에 도착했을 때 대문자로 변환됩니다. 나는 모델 내에서 다음 코드가 순간 입력을 대문자로 변환하는 대문자 속성
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode, Uppercase=true)]
public string Account
{
get { return _account; }
set
{
if (value != null)
_account = value.ToUpper();
}
}
하지만 제가 정말 좋아하는 것은 이것이다 :
[Required]
[Display(Name="Account Code")]
[StringValidation(RegExValidation.AccountCode)]
[Uppercase]
public string Account { get; set; }
나는 내가 대문자 속성을 만들어야 할 수도 있다고 생각 모델이 서버에 도달 할 때 해당 모델이 실행되도록하려면 ValidationAttribute
으로 지정하십시오. 하지만 실제로는 데이터의 유효성을 검사하지 않기 때문에 약간 잘못되었습니다. 더 좋은 방법이 있습니까?
또한 속성에 대한 호출 순서를 보장 할 수있는 방법이 있습니까? 사용자 정의 StringValidation
속성이 실행되기 전에 데이터를 대문자로 변환하려고합니다. 정규 표현식 패턴의 텍스트 대/소문자를 검사합니다.
배경을 약간 추가하려면 코드를 추가하여 데이터를 대문자로 만들 필요가 없습니다. 너바나는 모델 바인딩 또는 유효성 검사 단계에서 서버로가는 도중에 데이터를 업데이트하는 단일 속성입니다. 이 특성은 StringValidation
특성에서 참조되어 해당 검사에 사용 된 RegEx 값을 수정합니다. 또한 사용자 지정 TextBoxFor
도우미 메서드에서이 특성을 조회 할 수 있으므로 text-transform: uppercase
을 추가하여 클라이언트 측에서 올바르게 표시되도록 할 수 있습니다.
아무도 아이디어가 있습니까?
정말 멋지다! –
안녕하세요, MVC 4에 적용됩니까? 다음과 같은 오류가 표시됩니다. 'UpperCaseValidationAttribute'는 'System.Web.Mvc.IClientValidatable.GetClientValidationRules (System.Web.Mvc.ModelMetadata, System.Web.Mvc.ControllerContext)'인터페이스 멤버를 구현하지 않습니다. 감사!! – ecasper
예 MVC4에서 작동합니다. 당신은'public IEnumerable GetClientValidationRules (ModelMetadata 메타 데이터, ControllerContext 컨텍스트)에 대한 오버라이드를 추가해야합니다. 이것은 약간의 ... 답변 : –
Nick