1

ASP.NET MVCのコアにいくつかの[必須]フィールドのバリデータを無効にしますか?は、特定のケースの下で、モデルやビューのいくつかのフィールドのバリデータを無効にする簡単な方法がありますビュー

ウェブ上のほとんどの情報は、ASP.NETフォーム時代からのものです。 私は試してみるにはあまりにも多くのものを見つけることができませんでしたが、これはトリックをしないように見えます。

<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

対応する入力はどのように生成しますか?新しい「asp-for」タグヘルパーを使用すると、 ''は自動的にバリデーションスパンを生成し、data-require属性を入力に追加します。 – regnauld

+0

対応するコードの残りの部分を追加しました –

答えて

1

<input asp-for="Files.PromoImage"/>PromoImageプロパティは[Required]属性でマークされている場合、検証スパンとdata-required属性を生成します。生成されたhtmlをブラウザで確認することができます。あなたは、あなたのポストのアクションメソッドでは、サーバー上で再度

@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"/> 
} 

あなたが望むものを達成するための最も簡単な方法は、ビューでこのような何かをモデルに[Required]属性を削除して持つことですPromoImageプロパティの手動検証が必要です。

これほど簡単ではありませんが、より洗練されたアプローチは、独自の検証属性とjQueryバリデータを使用してMVCとjQueryの検証を拡張することです。 [RequiredIf]。 APIはASP.NET Core 1.0ではわずかに異なりますが、ここに例があります:Custom validation

+0

それはトリックです。ほんとありがと。 –

関連する問題