Bedingt erforderliche Eigenschaft, die Datenanmerkungen verwendet
Habe ich eine Klasse wie folgt aus:
public class Document
{
public int DocumentType{get;set;}
[Required]
public string Name{get;set;}
[Required]
public string Name2{get;set;}
}
Nun, wenn ich eine [Required]
Daten Anmerkung auf der Name
und Name2
Eigenschaften, dann ist alles ok und wenn Name
oder Name2
leer sind, die Validierung wird keinen Fehler werfen.
Aber ich will Name
Feld ist nur erforderlich, wenn DocumentType
ist gleich 1
und Name2
nur erforderlich, wenn DocumentType
ist gleich 2 .
public class Document
{
public int DocumentType{get;set;}
[Required(Expression<Func<object, bool>>)]
public string Name{get;set;}
[Required(Expression<Func<object, bool>>)]
public string Name2{get;set;}
}
aber ich weiß, ich kann nicht, es verursacht einen Fehler. Was soll ich tun, die für diese Anforderung?
InformationsquelleAutor der Frage brtb | 2014-10-14
Du musst angemeldet sein, um einen Kommentar abzugeben.
Out of the box denke ich ist das noch nicht möglich.
Aber ich fand diese viel versprechende Artikel über Mvc.ValidationToolkit (auch hierleider diese ist nur eine alpha, aber Sie konnten wohl auch nur extrahieren Sie die Methode(s) die Sie benötigen, aus diesem code und integrieren Sie ihn auf Ihrer eigenen)es enthält die nett klingende Attribut
RequiredIf
das scheint exakt auf Ihre Ursache:install-package Microsoft.AspNet.Mvc
)using Mvc.ValidationToolkit;
[RequiredIf("DocumentType", 2)]
oder[RequiredIf("DocumentType", 1)]
also Objekte gültig sind, wenn wedername
odername2
geliefert werden, solangeDocumentType
ist nicht gleich 1 oder 2InformationsquelleAutor der Antwort DrCopyPaste
RequiredIf validation-Attribut
Ich habe eine schriftliche
RequiredIfAttribute
erfordert eine bestimmte Immobilie Wert, wenn Sie eine andere Eigenschaft einen bestimmten Wert hat (was Sie benötigen), oder wenn eine andere Eigenschaft hat nichts, aber einen bestimmten Wert.Dies ist der code, der helfen kann:
InformationsquelleAutor der Antwort Robert Koritnik
Bedingt erforderlich-Eigenschaft mithilfe von datenanmerkungen
InformationsquelleAutor der Antwort
Check-out Fließend Validierung
https://www.nuget.org/packages/FluentValidation/
Projekt Beschreibung
Eine kleine Validierungs-Bibliothek für .NET, die verwendet ein fluent interface und lambda-Ausdrücke für Gebäude-Validierungs-Regeln für Ihren business objects.
https://github.com/JeremySkinner/FluentValidation
InformationsquelleAutor der Antwort Chris McKelt
Check-out MVC Narrensicher Validierung. Es hat Daten-annotation in model wie RequiredIf (abhängige Eigenschaft, abhängig Wert) wenn ich mich richtig erinnere. Herunterladen können Sie Kinderleicht von Tools -> Nuget-Paket-Manager -> " Nuget-Pakete Verwalten für die Lösung, wenn mit VS2017. Referenz mvcfoolproof.unobtrusive.min.js zusätzlich zu den jquery-Dateien.
InformationsquelleAutor der Antwort Jaggan_j
Ich kann Ihnen nicht genau das, was Sie für Fragen, aber haben Sie sich überlegt sowas wie das folgende?
Begründung, die
int DocumentType
variable. Sie ersetzen könnten diese mit Hilfe konkreter Unterklasse-Typen für jeden "Typ" des Dokuments, die Sie benötigen, zu beschäftigen. Dadurch bekommen Sie eine viel bessere Kontrolle Ihrer Immobilie Anmerkungen.Es scheint auch, dass nur einige Ihrer Eigenschaften, die benötigt werden, in verschiedenen Situationen, das könnte ein Zeichen sein, dass Ihr Dokument der Klasse versucht zu viel zu tun, und unterstützt den Vorschlag oben.
InformationsquelleAutor der Antwort Patrick Allwood