18

最近、DataAnnotationsでASP.Net MVCを使用し、Formsプロジェクトにも同じアプローチを使用することを考えていましたが、その方法がわかりません。

属性を設定しましたが、[保存]をクリックしてもチェックされないようです。

更新:クラスの属性をチェックし、次のようなエラーのコレクションを返すSteveSandersonのアプローチを使用しました。

        try
        {
            Business b = new Business();
            b.Name = "feds";
            b.Description = "DFdsS";
            b.CategoryID = 1;
            b.CountryID = 2;
            b.EMail = "SSDF";
            var errors = DataAnnotationsValidationRunner.GetErrors(b);
            if (errors.Any())
                throw new RulesException(errors);

            b.Save();
        }
        catch(Exception ex)
        {

        }

このアプローチについてどう思いますか?

4

4 に答える 4

26

簡単な例を次に示します。次のようなオブジェクトがあるとします

using System.ComponentModel.DataAnnotations;

public class Contact
{
    [Required(AllowEmptyStrings = false, ErrorMessage = "First name is required")]
    [StringLength(20, MinimumLength = 5, ErrorMessage = "First name must be between 5 and 20 characters")]
    public string FirstName { get; set; }

    public string LastName { get; set; }

    [DataType(DataType.DateTime)]
    public DateTime Birthday { get; set; }
}

そして、以下にリストされているように、このクラスのインスタンスを作成し、そのプロパティを検証しようとするメソッドがあるとします。

    private void DoSomething()
    {
        Contact contact = new Contact { FirstName = "Armin", LastName = "Zia", Birthday = new DateTime(1988, 04, 20) };

        ValidationContext context = new ValidationContext(contact, null, null);
        IList<ValidationResult> errors = new List<ValidationResult>();

        if (!Validator.TryValidateObject(contact, context, errors,true))
        {
            foreach (ValidationResult result in errors)
                MessageBox.Show(result.ErrorMessage);
        }
        else
            MessageBox.Show("Validated");
    }

DataAnnotations 名前空間は MVC フレームワークに関連付けられていないため、さまざまな種類のアプリケーションで使用できます。上記のコード スニペットは true を返します。プロパティ値を更新して検証エラーを取得してみてください。

また、MSDN のリファレンスを確認してください: DataAnnotations Namespace

于 2011-08-08T13:30:04.067 に答える
5

スティーブの例は少し古くなっています (それでも良いのですが)。彼が持っている DataAnnotationsValidationRunner を System.ComponentModel.DataAnnotations.Validator クラスに置き換えることができるようになりました。このクラスには、DataAnnotations 属性で装飾されたプロパティとオブジェクトを検証するための静的メソッドがあります。

于 2010-10-15T03:03:54.900 に答える
-1

Entity Framework の最新バージョンを使用している場合、このコマンドを使用してエラーのリストを取得できます (存在する場合)。

YourDbContext.Entity(YourEntity).GetValidationResult();
于 2014-06-12T07:39:47.953 に答える