Любые образцы приложений MVC3 Wizard (многошаговые) (БЕЗ JQUERY)

Я искал максимум / минимум в GooglePlex и здесь для примера мастера MVC3 (многошаговый), который НЕ задействует элементы проверки клиентов MVC3 (и jQuery). Я видел по крайней мере одно подробное объяснение некоторых элементов здесь: проблемы многоэтапной регистрации в asp.net mvc (разделенные модели представления, одиночная модель), но я не смог заставить его работать должным образом.

Будучи новичком в MVC3 и программировании в целом, я подозреваю, что мой уровень опыта не позволяет мне заставить его работать.

Как бы то ни было, любое руководство по использованию не-Jquery MVC3 мастера было бы здорово. Заранее спасибо.

2 ответа

Решение

Я хотел бы сделать что-то вроде этого, если jQuery/javascript не разрешено использовать

  1. Создать контроллер для мастера
  2. Создайте модель, которая содержит все поля, которые установит мастер.
  3. Создайте одно действие на страницу мастера, все действия должны использовать одну и ту же модель
  4. Создайте последнее действие, которое сохраняет все в БД.

Джонас абсолютно прав. Немного дальше разбивка ниже.

public class MyModel
{
     [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
     public Guid Id { get; set };
     public string StepOneData { get; set; }
     public string StepTwoData { get; set; }
}

Вышеприведенный код глуп, просто замените свои поля там. Далее мы начнем с простого действия, которое запускает нашего мастера.

    public ActionResult WizardStep1()
    {
        return View(new MyModel());
    }

Это вызывает представление "WizardStep1.cshtml (если используется бритва, которая есть). Вы можете использовать мастер создания шаблонов, если хотите. Мы просто перенаправим сообщение на другое действие.

<WizardStep1.cshtml>
@using (Html.BeginForm("WizardStep2", "MyWizard")) {

Следует отметить, что мы будем публиковать это в другом действии; действие WizardStep2

    [HttpPost]
    public ActionResult WizardStep2(MyModel myModel)
    {
        return ModelState.IsValid ? View(myModel) : View("WizardStep1", myModel);
    }

В этом действии мы проверяем, действительна ли наша модель, и если это так, мы отправляем ее в наше представление WizardStep2.cshtml, в противном случае отправляем обратно на первый шаг с ошибками проверки. На каждом шаге мы отправляем его на следующий шаг, проверяем этот шаг и идем дальше. Теперь некоторые опытные разработчики могут сказать, что мы не можем переходить между шагами, такими как этот, если мы используем атрибуты [Required] или другие аннотации данных между шагами. И вы были бы правы, поэтому удалите ошибки на предметах, которые еще предстоит проверить. как ниже.

    [HttpPost]
    public ActionResult WizardStep3(MyModel myModel)
    {
        foreach (var error in ModelState["StepTwoData"].Errors)
        {
            ModelState["StepTwoData"].Errors.Remove(error);
        }

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

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

Спасибо за прочтение.

Другие вопросы по тегам