2010-06-22 13 views
18

Mi chiedevo se esiste un modo per utilizzare l'annotazione Dati di ASP.Net senza il sito MVC.Utilizzo dell'annotazione dei dati MVC ASP.Net all'esterno di MVC

Il mio esempio è che ho una classe che una volta creata deve essere convalidata, o genererà un errore. Mi piace il metodo delle annotazioni dei dati, invece di un mucchio di blocchi se sparati dall'initaliser.

C'è un modo per farlo funzionare?

ho pensato che sarebbe qualcosa di simile:

  • annotazioni di aggiungere dati
  • fuoco un metodo nella initialiser che chiama il validatore MVC sulla classe

tutte le idee? Devo ammettere che ho ricontattato aggiunto il framework MVC per il mio progetto come speravo potessi usare lo System.ComponentModel.DataValidation annotazioni di dati di classe

+0

Ho creato la mia versione della classe DataValidation, posso eventualmente esternarla se le persone sono interessate. È stato eseguito prima di MVC2 e può ospitare casi più complessi. –

risposta

26

Ecco un esempio:

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

ma onestamente è molto FluentValidation più potente.

+3

Cercavo una soluzione .Net 3.5 - ValidationContext non è disponibile prima .Net 4.0 – Doug

+1

@Doug potrebbe desiderare di inserirlo come domanda nella domanda. –

+0

Sfortunatamente, questa convalida non viene inoltrata attraverso oggetti o raccolte figlio complessi. Validator.TryValidateObject (...) esegue solo convalide di proprietà e campi immediate e le chiama un giorno, a differenza della convalida che avviene sul binding del modello nel controller nel mondo MVC che attraversa l'intero grafico dell'oggetto. – neumann1990