MVC

2010-06-22 16 views
18

'un dışındaki ASP.Net MVC Veri Açıklaması'nı kullanmak, ASP.Net'in Veri açıklamasını MVC sitesi olmadan kullanmanın bir yolu olup olmadığını merak ediyordum.MVC

Örneğim, oluşturulduktan sonra doğrulanması gereken bir sınıfa sahip olduğumu veya bir hata yapacağım. Veri notlama yöntemini, inisiyatif tarafından kovulan blokların bir demet yerine sevdim.

Bunu işe almanın bir yolu var mı?

  • Add veri ek açıklamaları
  • Yangın sınıfına

herhangi bir fikir üzerinde MVC doğrulayıcı çağıran Başlatıcı bir yöntem:

Ben böyle bir şey olacağını düşündüm? i ben sadece veri ek açıklamaları sınıf System.ComponentModel.DataValidation İşte

+0

DataValidation sınıfının kendi sürümünü oluşturdum, ilgilenirseniz muhtemelen dışarıdan kaynak sağlayabilirim. MVC2'den önce yapıldı ve daha karmaşık vakaları barındırabilir. –

cevap

26

kullanmak umuyordum olarak benim projeye MVC framework eklendi sığınak itiraf bir örnek gerekir:

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); 
      } 
     } 
    } 
} 

Ama oldukça dürüst FluentValidation kadar daha güçlü.

+3

Bir .Net 3.5 çözümü arıyordum - ValidationContext daha önce kullanılamıyor. Net 4.0 – Doug

+1

@Doug bu soruya bir req vermek isteyebilir. –

+0

Maalesef, bu doğrulama, karmaşık çocuk nesneler veya koleksiyonlar aracılığıyla tekrarlanmaz. Validator.TryValidateObject (...) hemen özellik ve alan doğrulamaları yapar ve MVC dünyasında tüm nesne grafiğini hareket ettiren denetleyicide model bağında gerçekleşen doğrulamanın aksine, bunu bir gün olarak adlandırır. – neumann1990