Я прочитал и искал эту проблему с помощью механизма проверки библиотеки предприятия. Это очень простое приложение формы демонстрирует проблему. Класс метаданных игнорируется валидатором. Я пытаюсь использовать его в приложении MVC с Entity Framework.
Это в .NEt 3.5 с использованием VS 2008 на XP SP3.
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 в основной класс, он будет работать.
Любое понимание будет с благодарностью.
Спасибо