У меня есть поле количества в представлении, которое требуется, если флажок установлен.Проверка на стороне клиента ASP.NET MVC5
После того, как Razor отображает данные View с моделью, и пользователь проверяет флажок без соответствующей суммы. Появится сообщение «Проверка». Если я отключу этот флажок, сообщение проверки не исчезнет.
Я попытался использовать 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-with-asp-net-mvc-add-client-side-support/ –
Какой плагин вы используете для своих пользовательских атрибутов (или у вас есть?). Нет причин повторять валидатор. И не устанавливайте атрибут 'id' - просто переписываете идентификатор, сгенерированный методами' HtmlHelper' –