#

MVC Modal.state Error Validation Access and view with json - javascripts

Aymira Yazılım Bilişim Aymira Yazılım Bilişim

16 Kasım 2022 Yazılım Dilleri (150) /Asp.Net MVC (108) (65)

Paylaşmak güzeldir. Lütfen sizde paylaşın...


<script src="~/Scripts/jquery.unobtrusive-ajax.js"></script>
<script src="~/Scripts/jquery.validate.js"></script> ​

      Yukarıdaki iki dosyanın işe yaramadığı karmaşık form işlelerinde kullanmak için;
Ajax post ile kayıt ve  return Json ile validation durumlarını göstermek için aşağıdaki yöntem işinize yarayabilir.


//Modal state errorları yakalamak istediğiz şekilde briisini seçin..
public static IDictionary ToSerializedDictionary(this ModelStateDictionary modelState)
        {
            return modelState.ToDictionary(
                  k => k.Key,
                  v => v.Value.Errors.Select(x => x.ErrorMessage).ToArray()
            );
        }

//Örneğimizde bu seçildi.
public static IEnumerable ToErrors(this ModelStateDictionary modelState)
        {
            if (!modelState.IsValid)
            {
                return modelState.ToDictionary(kvp => kvp.Key,
                    kvp => kvp.Value.Errors
                                    .Select(e => e.ErrorMessage).ToArray())
                                    .Where(m => m.Value.Any());
            }
            return null;
        }



 if (ModelState.IsValid)
            {
...bla bla... return success;
} else{

var ModelStateerrors = Araclar.ToErrors(ModelState);
            //var ModelStateEroroToSerialized = ModelState.ToSerializedDictionary();
            this.Flash("alert alert-danger", "<i class=\"fas fa-exclamation-triangle\"></i>" + " Lütfen Tüm Gerekli Alanları doldurunuz!" + "<i class=\"glyphicon glyphicon-exclamation-sign\">" + "</i>");
            return Json(new
            {
                success = false,
                icon = "error",
                message = "Lütfen Tüm Gerekli Alanları doldurunuz!",
                AracId = model.AracId,
                Errors_ModelState = ModelStateerrors
                //ModelStateEroroToSerialized= ModelStateEroroToSerialized
            }, JsonRequestBehavior.AllowGet);

}




$(document).ready(function () {
            $('#form').off('submit').on('submit', function (e) {
                e.preventDefault();
                e.stopPropagation();
                var form = $('#form');
                /*$.validator.unobtrusive.parse(form.serialize());*/
                    $.ajax({
                        url: form.attr('action'),
                        data: form.serialize(),
                        method: 'post',
                        success: function (result) {
                            swal.fire({
                                position: 'top-end',
                                icon: result.icon,//'success',
                                title: result.message,//'Your work has been saved',
                                showConfirmButton: false,
                                timer: 3500
                            })

                            if (result.success == false) {
                                 
                                //alert(result.Errors_ModelState);
                                DisplayErrors(result.Errors_ModelState); //Call
                            }

                        },
                       
                        }
                    });
            });
        });

function DisplayErrors(errors) {
            for (var i = 0; i < errors.length; i++)
         {
                $("<label for='" + errors[i].Key + "' class='has-error text-danger'></label>").html(errors[i].Value[0]).appendTo($("#" + errors[i].Key).parent());
// Modal.property name ==same  errors[i].Key . soo appendTo  >> write messega.. 
//Thats it. 

            }
        }


Paylaşmak güzeldir. Lütfen sizde paylaşın...



Herkesyazar Ara