Côté client Pour désactiver la validation d'un formulaire, plusieurs options basées sur mes recherches sont données ci-dessous. J'espère que l'une d'entre elles vous conviendra.
Option 1
Je préfère cela, et cela fonctionne parfaitement pour moi.
(function ($) {
$.fn.turnOffValidation = function (form) {
var settings = form.validate().settings;
for (var ruleIndex in settings.rules) {
delete settings.rules[ruleIndex];
}
};
})(jQuery);
et l'invoquer comme
$('#btn').click(function () {
$(this).turnOffValidation(jQuery('#myForm'));
});
Option 2
$('your selector here').data('val', false);
$("form").removeData("validator");
$("form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("form");
Option 3
var settings = $.data($('#myForm').get(0), 'validator').settings;
settings.ignore = ".input";
Option 4
$("form").get(0).submit();
jQuery('#createForm').unbind('submit').submit();
Option 5
$('input selector').each(function () {
$(this).rules('remove');
});
Côté serveur
Créez un attribut et marquez votre méthode d'action avec cet attribut. Personnalisez cela pour l'adapter à vos besoins spécifiques.
[AttributeUsage(AttributeTargets.All)]
public class IgnoreValidationAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var modelState = filterContext.Controller.ViewData.ModelState;
foreach (var modelValue in modelState.Values)
{
modelValue.Errors.Clear();
}
}
}
Une meilleure approche a été décrite ici Activer/désactiver dynamiquement la validation côté serveur de mvc
3 votes
+1 bonne question. Il serait bon de mentionner la validation du client ici. Une option consiste à supprimer le
RequiredAttr
complètement et faire une vérification côté serveur lorsque vous doivent le faire. Mais cela serait délicat pour le client4 votes
Des points pour toute personne qui couvre également l'invalidité certains Les champs de validation des clients (sans enlever les références à la validation jquery)
0 votes
Peut-être que je ne comprends pas ce que vous voulez dire, mais si l'utilisateur a déjà spécifié les valeurs au préalable, alors ces valeurs sont déjà présentes et passent donc la validation requise. Voulez-vous dire autre chose ?
0 votes
Parce que ces valeurs ont depuis été hachées, comme le mot de passe et la réponse de sécurité, donc s'ils entrent une nouvelle valeur sur le formulaire d'édition, je veux hacher à nouveau la nouvelle valeur avant l'insertion, mais je veux aussi l'option pour qu'elle soit laissée vide, une sorte de chose.
1 votes
@gideon : voir la réponse d'Adrian Smith : stackoverflow.com/a/9781066/114029