2010-06-22 112 views
18

我想知道是否有一種方法可以在沒有MVC站點的情況下使用ASP.Net的數據註釋。在MVC之外使用ASP.Net MVC數據註釋

我的例子是我有一個曾經創建的類需要驗證,否則會拋出一個錯誤。我喜歡數據註釋方法,而不是一堆由initaliser發射的塊。

有沒有辦法讓這個工作?

我認爲這將是這樣的:

  • 添加數據註解
  • 火在調用這個類

任何想法的MVC驗證初始化劑的方法?我必須承認我還沒有加入MVC框架到我的項目,我希望我可以只使用數據的註釋類System.ComponentModel.DataValidation

+0

我創建了我自己的DataValidation類的版本,如果有人感興趣,我可以將它外包。它是在MVC2之前完成的,可以容納更復雜的案例。 – 2010-06-22 02:30:43

回答

26

下面是一個例子:

using System; 
using System.Collections.Generic; 
using System.ComponentModel.DataAnnotations; 

public class Foo 
{ 
    [Required(ErrorMessage = "the Bar is absolutely required :-)")] 
    public string Bar { get; set; } 
} 

class Program 
{ 
    public static void Main() 
    { 
     var foo = new Foo(); 
     var results = new List<ValidationResult>(); 
     var context = new ValidationContext(foo, null, null); 
     if (!Validator.TryValidateObject(foo, context, results)) 
     { 
      foreach (var error in results) 
      { 
       Console.WriteLine(error.ErrorMessage); 
      } 
     } 
    } 
} 

但坦白地說FluentValidation是多少更加強大。

+3

我正在尋找.Net 3.5解決方案 - ValidationContext在.NET 4.0 – Doug 2010-06-23 12:12:57

+1

之前不可用.Doug可能希望將其作爲請求的問題。 – 2014-10-22 02:27:00

+0

不幸的是,這個驗證不通過任何複雜的子對象或集合遞歸。 Validator.TryValidateObject(...)只是立即進行屬性和字段驗證,並將其稱爲一天,而不是在MVC世界中的Controller中的模型綁定上發生的驗證,該驗證遍歷整個對象圖。 – neumann1990 2016-11-03 20:32:54