엔터프라이즈 라이브러리 유효성 검사 메커니즘을 사용하여이 문제점을 읽고 검색했습니다. 이 간단한 폼 응용 프로그램은이 문제를 보여줍니다. 메타 데이터 클래스는 유효성 검사기에서 무시됩니다. MVC 응용 프로그램에서 Entity Framework를 사용하려고합니다..Net 3.5 유효성 검사기를 사용할 때 MetadataType이 무시됩니다.
이것은 XP SP3에서 VS 2008을 사용하여 .NEt 3.5에 있습니다.
namespace ValidationTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
string longname = "this is much too long to be a name";
Customer2 cust = new Customer2(longname);
ValidationResults r = Validation.Validate<Customer2>(cust);
if (!r.IsValid)
{
throw new ArgumentException();
}
}
}
public partial class Customer2
{
public string CustomerName;
public Customer2(string name)
{
CustomerName = name;
}
}
[MetadataType(typeof(CustMetadata))]
public partial class Customer2
{
}
public class CustMetadata
{
[StringLengthValidator(0, 20)]
public string CustomerName { get; set; }
}
}
두 파일은 모두 프레젠테이션 목적으로 같은 파일에 있습니다. StringLengthAttribute를 기본 클래스로 옮기면 작동합니다.
어떤 통찰력이라도 대단히 감사하겠습니다.
감사
고마워요. 나는 그것을 시도했지만 아직 가지 않습니다. – Jerry
@Jerry - 귀하의 코드 예제를 복사하고 잘 작동합니다 (ArgumentException이 발생 함)! 제가 생각할 수있는 유일한 것은 당신이 엔터프라이즈 라이브러리 5를 사용하지 않고 있다는 것입니다. EL 4.1을 사용할 수 있습니까? –