Tôi đang sử dụng RT 2010 VSM và cố gắng thực hiện một số xác thực cơ bản trên một loại đơn giản bằng cách sử dụng MetadataTypeAttribute. Khi tôi đặt thuộc tính xác nhận vào lớp chính, mọi thứ sẽ hoạt động. Tuy nhiên, khi tôi đặt nó vào lớp siêu dữ liệu, nó dường như bị bỏ qua. Tôi phải thiếu một thứ gì đó tầm thường, nhưng tôi đã bị mắc kẹt trong chuyện này một thời gian rồi.Thuộc tính .NET 4 RTM MetadataType bị bỏ qua khi sử dụng Validator
Tôi đã xem xét khối xác thực Thư viện doanh nghiệp dưới dạng giải pháp thay thế, nhưng không hỗ trợ xác thực các thuộc tính đơn lẻ ngoài hộp. Bất kỳ ý tưởng?
class Program
{
static void Main(string[] args)
{
Stuff t = new Stuff();
try
{
Validator.ValidateProperty(t.X, new ValidationContext(t, null, null) { MemberName = "X" });
Console.WriteLine("Failed!");
}
catch (ValidationException)
{
Console.WriteLine("Succeeded!");
}
}
}
[MetadataType(typeof(StuffMetadata))]
public class Stuff
{
//[Required] //works here
public string X { get; set; }
}
public class StuffMetadata
{
[Required] //no effect here
public string X { get; set; }
}
Cảm ơn bạn đã thực hiện điều này! – aikeru
Tại sao điều này không được ghi chú trong danh sách MetadataTypeAttribute trên MSDN? Tôi đã bị treo trong một vài giờ b/c trong dự án MVC của tôi tất cả mọi thứ hoạt động tốt, nhưng khi tạo ứng dụng Windows của tôi tôi cần phải giải thích –