チェックボックスをオンにすると必要なビューにamountフィールドがあります。ASP.NET MVC5クライアント側の検証
Razorはモデルデータを含むビューをレンダリングし、対応する金額を入力しないでチェックボックスをチェックします。検証メッセージが表示されます。そのチェックボックスの選択を解除すると、検証メッセージは消えません。
jqueryを使用して生成されたすべてのルールを削除しようとしましたが、ユーザーがチェックボックスを再度使用すると、それらの検証ルールが削除されていました本当に醜いです。)
MVCモデルで同じ要件を満たすクライアント側を再検証する方法はありますか?
モデル:
[Display(Name = "Include Amount")]
public bool IncludeAmount { get; set; }
[Display(Name = "Amount")]
[RequiredIf("IncludeAmount", TargetValue = true, ErrorMessage = "Amount is required.")]
[MaxDigits(10, 2)]
[RegularExpression(RegularExpressions.Money, ErrorMessage = ErrorMessages.NumericValueInvalidFormat)]
[GreaterThanZero]
public Nullable<decimal> Amount { get; set; }
ビュー:
<td class="dataEntryLabel" colspan="2">
@Html.LabelFor(model => model.IncludeAmount)
</td>
<td class="dataEntryField" colspan="2">
@Html.CheckBoxFor(model => model.IncludeAmount, new { id = "IncludeAmount" })
<span class="dollar-sign">@Html.TextBoxFor(model => model.Amount, "{0:F}", new { id = "Amount", disabled = "disabled" })</span>
@Html.ValidationMessageFor(model => model.Amount)
</td>
のJavaScript(クライアント側):
function fixUnobtrusiveValidations() {
var form = getForm();
(<any>$).validator.unobtrusive.parse(form);
}
function onClickCheckBoxIncludeAmount(){
fixUnobtrusiveValidations();
}
$('IncludeAmount').click(onClickCheckBoxIncludeAmount);
をhttps://code.msdn.microsoft.com/Flexible-Conditional-37ae638e/sourcecodeこれを試してみてください?fileId = 65995&pathId = 91939366 ここにいくつかの説明があります。https://blogs.msdn.microsoft.com/stuartleeks/ 2012/09/07/flexible-conditional-validation-asp-net-mvc-add-client-side-support/ –
カスタム属性に使用しているプラグインは何ですか?バリデータを再解析する理由はありません。 'id'属性を設定しないでください。' HtmlHelper'メソッドによって生成されたidを上書きするだけです。 –