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