FooProof Core validating in Asp.NET Core for Validation but shows exception

208 Views Asked by At

I am using FoolProof COre in Asp.Net Core 3.0 Application.

My Model is

    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; }

       }

My _Layout Page inclueds:

    <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>

In my View is

      $.validator.unobtrusive.parse("#EditPayReceiveM");

When correct input is there the data works fine. But when the RequiredIf validation fails system exception is there in Java Script which is as below:

System.ArgumentNullException: Value cannot be null. (Parameter 'items') at Microsoft.AspNetCore.Mvc.Rendering.MultiSelectList..ctor(IEnumerable items, String dataValueField, String dataTextField, IEnumerable selectedValues, String dataGroupField)

Full Razor View is as :

<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.








0

There are 0 best solutions below