2010-12-13 7 views
2

У меня есть трехэтапная форма, где я привязываю для каждого шага на ViewModel, который имеет DataAnnotation. Все работает отлично, за исключением того, что, когда я нажимаю на свою «предыдущую» кнопку, валидация вызывается и, если отсутствуют значения, пользователь должен заполнить все обязательные поля. Если я перейду с ссылкой на действие, то данные не будут сохранены. Я ищу здесь способ сохранить мои значения, не вызывая проверки. Я также рассматриваю использование файлов cookie, но я не думаю, что это лучший способ сделать это.поэтапная проблема с проверкой на кнопке «назад»

Любые идеи или предложения?

ответ

1

После многократного поиска выяснилось, что у мастера есть несколько форм с предыдущими и последующими кнопками, которые не будут вызывать проверку клиента из аннотации данных и MicrosoftMvcValidation.js. Я нашел этот пост: jQuery Validation plugin: disable validation for specified submit buttons ведьма просто добавила класс в кнопку отправки, но она не работала для меня, поэтому я снова посмотрел и нашел это: http://forums.asp.net/p/1622628/4165648.aspx witch имеет решение, работающее для меня в javascript: document.getElementById ("someButton") .disableValidation = true; Я бы предпочел решение jQuery, чтобы я мог что-то сделать с атрибутом класса моих кнопок, но он работает на сегодняшний день, и я потратил слишком много времени на это.

Надеюсь, что это поможет кому-то еще, кто пытается сделать кнопку «Отмена» или «Мастер», как формы в MVC2, и хочет отправить форму на контроллер, чтобы он очистил проверку.

1

Я использую отдельные модели для каждого шага страниц моего мастера. Я также убеждаюсь, что предыдущие клики не поражают ModelState.IsValid, что и вызывает проверку проверки.

Я сохраняю результаты каждого шага, используя состояние сеанса, хранящееся в SQL Server. Вы также можете использовать скрытые переменные, но мне не понравилось это решение.

Добавьте комментарий, если вам нужно больше деталей или показать код для просмотра.

+0

Спасибо за ответ, вот как я работаю, мой вопрос будет больше о том, как вы делаете предыдущую кнопку не ударять ModelState.IsValid? Я использую проверку клиента, я знаю, что в моем контроллере мне просто не нужно вызывать Model.IsValid(), но я не знаю, как «отключить» проверку клиента для моей предыдущей кнопки. Я могу опубликовать свой код, если вам это нужно, но я не хочу, чтобы он был нужен. – VinnyG

+0

Моя предыдущая кнопка просто вызывает метод действия без отправки формы. Вы также можете определить, какая кнопка была нажата, а затем вызвать ModelState.Clear, чтобы обнулить ошибки. – rboarman

+0

Что я пытаюсь сделать, это сохранить поля, когда пользователь нажимает на предыдущие, поэтому я не могу сделать это с помощью ActionLink. Так что я хочу, чтобы отправить форму, но она не работает с моего всплывающего окна. – VinnyG

Смежные вопросы