[英].NET 4 RTM MetadataType attribute ignored when using Validator
[英].Net 3.5 MetadataType Ignored when using validator
我已閱讀並使用企業庫驗證機制搜索了此問題。 這個非常簡單的表單應用程序演示了該問題。 驗證器將忽略Metadata類。 我試圖在帶有實體框架的MVC應用程序中使用它。
這是在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移到主類,它將起作用。
任何見識將不勝感激。
謝謝
您看到的問題是,在Customer2
類中,CustomerName是一個字段,而在CustMetadata
類中,CustomerName是一個屬性。
如果將CustMetadata
更改為:
public class CustMetadata
{
[StringLengthValidator(0, 20)]
public string CustomerName;
}
然后它會按預期工作。
匹配元數據時,驗證應用程序塊同時使用MemberType和Name 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.