簡體   English   中英

.Net 3.5使用驗證器時被忽略

[英].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;
}

然后它會按預期工作。

匹配元數據時,驗證應用程序塊同時使用MemberTypeName

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM