1

ASP.NET MVC-Core, ob das einen Unterschieddeaktivieren einige [Erforderlich] Feldvalidatoren in einer Ansicht

macht Gibt es eine einfache Möglichkeit, einige Feldvalidatoren in einem Modell oder Ansicht unter bestimmten Fällen zu deaktivieren?

Die meisten Informationen im Web scheinen aus der ASP.NET Forms-Ära zu stammen. Ich konnte nicht zu viele Dinge finden, um es auszuprobieren, aber das scheint nicht den Trick zu machen.

<label asp-for="Files.PromoImage" class="col-md-2 control-label"></label> 
<div class="col-md-10"> 
    <input asp-for="Files.PromoImage" class="form-control" /> 
    @if (Model.Content.NewArticle) 
    { 
     <span asp-validation-for="Files.PromoImage" class="text-danger"></span> 
    } 
</div> 
<div class="col-md-8"> 
    <div asp-validation-summary="ValidationSummary.All" class="text-danger"></div> 
</div> 
+0

Wie generieren Sie die entsprechende Eingabe? Denken Sie daran, dass die Verwendung des neuen "asp-for" -Tag-Helfers, z.B. '' generiert automatisch auch eine Validierungsspanne und fügt Datenanforderungen-Attribute an die Eingabe an. – regnauld

+0

Hinzugefügt den Rest des entsprechenden Codes –

Antwort

1

<input asp-for="Files.PromoImage"/> wird Validierung Spanne und data-required Attribut, wenn die PromoImage Eigenschaft markiert ist mit dem [Required] Attribute erzeugen. Sie können den generierten HTML-Code im Browser überprüfen.

Der einfachste Weg, um zu erreichen, was Sie wollen, sind das [Required] Attribut in dem Modell zu entfernen und in der Ansicht etwas wie diese:

@if (Model.Content.NewArticle) 
{ 
    <input class="form-control" data-val="true" 
     data-val-required="The PromoImage field is required." name="Files.PromoImage" 
     placeholder="Promo Image" type="text" value="">   
} 
else 
{ 
    <input asp-for="Files.PromoImage" class="form-control"/> 
} 

Dann wieder auf dem Server, die Sie in Ihrem Beitrag Aktion-Methode, müssen eine manuelle Validierung für die PromoImage Eigenschaft durchführen.

Nicht so trivial, aber eleganter Ansatz ist die MVC und jQuery Validierung mit Ihrem eigenen Validierungsattribut und jQuery Validator, z. [RequiredIf]. Die API unterscheidet sich geringfügig in ASP.NET Core 1.0, aber hier ist ein Beispiel: Custom validation

+0

Nun, es macht den Trick. so danke. –