안녕하세요, 간단한 질문이 있어야합니다. System.CompontentModel.DataAnnotations를 사용하는 일련의 유효성 검사가 있습니다. MVC2와 함께 제공되는 기본 AccountModels.cs 파일 에서처럼 특정 뷰 모델에만 적용되는 유효성 검사가 있으므로 모델과 동일한 파일에 유효성 검사 코드가있는 것이 좋습니다. 그러나 여러 모델에 적용되는 몇 가지 일반적인 유효성 검사가 있습니다 (예 : 유효한 전자 메일 주소 형식). 필자가 필요로하는 두 번째 모델에 해당 유효성 검사를 잘라내거나 붙여 넣을 때 동일한 네임 스페이스 (projectName.Models)에 있으므로 중복 정의 오류가 발생합니다. 그래서 공통된 유효성 검사를 네임 스페이스 내 별도의 클래스로 제거하여 모든 뷰 모델이 거기에서 유효성 검사에 액세스 할 수있을 것으로 기대했습니다. 예기치 않게 인증에 더 이상 액세스 할 수 없습니다. 나는 그들이 여전히 같은 네임 스페이스에 있다는 것을 확인했으며, 모두 공개이다. 내가 그들에 대한 특정 참조 (같은 네임 스페이스에 대한 문을 사용하여 추가했지만 그걸 해결하지 못했고, 참조 추가 대화 상자를 통해 프로젝트 자체를 참조 할 수 없다는 것을 기대하지 않을 것이다. 의미).ASP.Net MVC2의 공통 DataAnnotations
그래서 단순히 같은 공간에서 다른 파일로 이동 한 공개 검증이 여기에? 내 모델에 표시되지 않습니다
CommonValidations.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Text.RegularExpressions;
namespace ProjectName.Models
{
public class CommonValidations
{
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true, Inherited = true)]
public sealed class EmailFormatValidAttribute : ValidationAttribute
{
public override bool IsValid(object value)
{
if (value != null)
{
var expression = @"^[a-zA-Z][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$";
return Regex.IsMatch(value.ToString(), expression);
}
else
{
return false;
}
}
}
}
}
을 왜 어떤 아이디어 년대 유효성 검사를 사용하려는 코드 :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using Growums.Models;
namespace ProjectName.Models
{
public class PrivacyModel
{
[Required(ErrorMessage="Required")]
[EmailFormatValid(ErrorMessage="Invalid Email")]
public string Email { get; set; }
}
}
Visual Studio에서 사용자의 특성을 인식하지 못합니까? 또는 컴파일이 실패합니까? 또는 런타임 오류가 발생합니까? –
컴파일이 실패합니다. 공통 유효성 검증 파일에 정의 된 유효성 검증을 인식하지 못합니다. 동일한 네임 스페이스에 있습니다. –