Включить / отключить проверку на стороне сервера MVC динамически

У меня есть форма MVC смножественный отправить кнопки - 'Сохранить черновик ' а также 'Публиковать', Цель состоит в том, чтобы пропустить проверку как на стороне клиента (javascript / unobructive), так и на стороне сервера, когда 'Сохранить черновик ' нажата кнопка и форма отправлена. Но мне нужно запустить обе проверки, еслиПубликовать' кнопка нажата.

Мои исследования привели меня к нескольким решениям.

Клиентская сторона - путем написания плагина jquery

    (function ($) {
        $.fn.turnOffValidation = function (form) {
            var settings = form.validate().settings;

            for (var ruleIndex in settings.rules) {
                delete settings.rules[ruleIndex];
            }
        };
    })(jQuery); 

и вызывая его как

    $('#btnSaveDraft').click(function () {
        $(this).turnOffValidation(jQuery('#myForm'));
    });

Сторона сервера - Но для серверной стороны единственное решение, которое я смог найти, это удалить ошибки из ModelState. Я сделал это в атрибуте действия, чтобы его можно было многократно использовать и было легко использовать.

[AttributeUsage(AttributeTargets.All)]
public class IgnoreValidationAttribute : ActionFilterAttribute
{
    public override void OnActionExecuting(ActionExecutingContext filterContext)
    {
        var modelState = filterContext.Controller.ViewData.ModelState;

        //modelState.Clear();
        foreach (var modelValue in modelState.Values)
        {
            modelValue.Errors.Clear();
        }
    }
}

Но это не полностью служит моей цели. Зачем нам запускать проверку и устранять ошибки, если мы можем предотвратить это? Это возможно?

Существуют ли способы предотвратить проверку сервера в первую очередь вместо устранения ошибок, возникших в результате проверки?

Ответы на вопрос(3)

Ваш ответ на вопрос