Frage

Das funktioniert

 [MetadataType(typeof(Area_Validation))]
 public partial class Area
 {
    ...
 }

 public class Area_Validation
 {
 [Required(ErrorMessage = "Please add this field.")] 
 public int Email { get; set; }

 [Required(ErrorMessage = "Please add this field")]
 public string Name { get; set; }
 }

aber wie , wenn Area_Validation ist dynamisch erstellt ? zum Beispiel Abonnement Felder , die auf Back-End kann durch den Benutzer und am Ende wie folgt erstellt werden:

alt text

Wie kann ich die Metadaten auf jedes Feld für Auto-Validierung

Zur Zeit bin ich zu tun:

public class SubscriberFormViewModel
{
    public List<SubscriberFieldModel> Fields { get; private set; }
    public Calendar Calendar { get; private set; }
    public Company Company { get; private set; }

    public SubscriberFormViewModel()
    { 
        // TODO: This is only for testing while validation is not set
    }
    public SubscriberFormViewModel(Decimal calendarId)
    {
        if (calendarId > 0)
        {
            SubscribersRepository db = new SubscribersRepository();

            Calendar calendar = db.GetCalendarById(calendarId);
            Company company = db.GetCompanyById(calendar.company_id);

            this.Fields = db.FindAllSubscriberFieldsByCalendar(calendarId);
            this.Calendar = calendar;
            this.Company = company;
        }
        else
            this.Fields = new List<SubscriberFieldModel>();
    }
}

und ich möchte die Metadaten in allen Fields Eigenschaft festlegen

Mit anderen Worten, diese Fields werden aus der Datenbank gefüllt und mehrere Typen haben kann, kann eine string sein, number, dropdown, etc ... irgendwie wie MailChimp Felder Eigenschaften:

alt text

gibt es eine Möglichkeit, dies programmaticaly zu tun, oder ich brauche erstellen ein jQuery-Plugin, um zu validieren und Stopp mit Verwendung Validierung von MVC2?

Danke

War es hilfreich?

Lösung

Ich denke nicht, daß Sie diese mit Hilfe von Data Annotations Attribute tun können.

Es ist ein Projekt, in Codeplex, genannt Fluent Validation durch die Sie Validierungsregeln in einer fließenden Art und Weise hinzufügen Verwendung von .NET-Code. Ich habe nie das Projekt verwendet, aber es scheint, dass vielleicht haben Sie in Ihrem Fall mit dynamisch erzeugten Objekten helfen können.

Hope, es hilft!

Andere Tipps

Eigentlich kann man mehrere Validierungsszenarien machen, eine pro-Typ (oder mehr pro Art, wenn Sie benötigen). In Dann ist diese Validierungsregeln auf Art Schöpfung. Wenn Sie überprüfen möchten, können Sie Vorlage Validate-Methode aufrufen, dass, wenn diese Regeln überprüfen, und wenn nicht - werden Fehler Model hinzufügen, dass Sie sich auf Front-End zu zeigen, in der Lage.

Eigentlich ist es nicht, dass profitable alle Attribute hinzuzufügen, wie Attribute pro ist, dass Sie Ihre Art mit ihnen dekorieren können. Wenn Sie einige dynamischen Dinge tun, die bessere `d einige dynamische Art und Weise Validierung hinzuzufügen hat.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top