我在 Asp.Net Core 3.0 应用程序中使用 FoolProof COre。
我的模型是
public class PaymentReceiveMVm
{
public int PayMode { get; set; }
public string PaymentMode { get; set; }
[Column(TypeName = "date")]
[DataType(DataType.Date)]
public Nullable<DateTime> DOCredit { get; set; } //= DateTime.Today.Date;
[RequiredIf("PayMode",1,ErrorMessage ="Bank Name is Required")]
public int? BID { get; set; }
public string BankAccount { get; set; }
}
我的 _Layout 页面包括:
<script src="~/vendor/jquery/jquery.min.js"></script>
<script src="~/vendor/bootstrap/js/bootstrap.min.js"></script>
<script src="~/vendor/jquery-validation/jquery.validate.min.js"></script>
<script src="~/lib/js/jquery.validate.min.js"></script>
<script src="~/lib/js/jquery.validate.unobtrusive.min.js"></script>
<script src="~/vendor/FoolProofValidation/mvcfoolproof.core.js"></script>
<script src="~/vendor/FoolProofValidation/mvcfoolproof.jquery.validation.js"></script>
<script src="~/vendor/FoolProofValidation/mvcfoolproof.unobtrusive.js"></script>
在我看来是
$.validator.unobtrusive.parse("#EditPayReceiveM");
当输入正确时,数据工作正常。但是当RequiredIf验证失败时,Java Script中会出现系统异常,如下所示:
System.ArgumentNullException:值不能为空。(参数“项目”)在 Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable 项目,字符串 dataValueField,字符串 dataTextField,IEnumerable selectedValues,字符串 dataGroupField)
完整的 Razor 视图如下:
<script>
$(document).ready(function () {
$.validator.unobtrusive.parse("#EditPayReceiveM");
//Adding Containers to temporary Data Table
$('#BtnAdd').on('click', function () {
if (!$("#EditPayReceiveM").valid()) {
return false;
}
else {
console.log('DOC', $('#TxtDOC').val());
SaveModal(EditPayReceiveM, "/PaymentReceives/EditPayReceiveM", DtPaymentsReceived)
}
});
});
</script>
<div class="modal-header">
<h4 class="modal-title" id="MyModalTitle">Edit Payment</h4>
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
</div>
@using (Html.BeginForm("EditPayReceiveM", "PaymentReceives", FormMethod.Post, new { id = "EditPayReceiveM" }))
{
<div class="modal-body">
<form>
<fieldset>
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="row">
<div class="col-lg-6">
<div class="form-group">
<label>Pay Mode</label>
@Html.DropDownListFor(model => model.PayMode, new SelectList(ViewBag.Paymode, "PMID", "PayMode"), "-- Select One --", new { @class = "form-control", @id = "CmbPayMode",@onchange= "CheckPayMode(this)" })
<span asp-validation-for="PayMode" class="text-danger"></span>
</div>
<div class="form-group">
<label>Credit Date</label>
<div class="input-group">
<div class="input-group-prepend">
<button type="button" id="CreditDate" class="input-group-text"><i class="fas fa-calendar-alt"></i></button>
</div>
<input type="text" asp-for="DOCredit" class="form-control" id="TxtDOC" />
<span asp-validation-for="DOCredit" class="text-danger"></span>
</div>
</div>
</div>
</div>
</div>
</fieldset>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-info" data-dismiss="modal">Cancel</button>
<input type="button" class="btn btn-primary" value="Add" id="BtnAdd" />
</div>
}
-----
Please help I have done all what I could.