Идеи реализации следующей формы ввода в ASP.NET MVC 2 - PullRequest
4 голосов
/ 30 апреля 2010

У меня есть очень простая форма ввода данных для реализации. Это выглядит так:

альтернативный текст http://i40.tinypic.com/2a9pojq.gif

Очевидно, я смоделировал фактические требования, но суть схожа.

  • При вводе имени и истории кликов должно появиться всплывающее окно, указывающее на URL '/ student / viewhistory / {name}' *
  • Имя и возраст обязательны для заполнения
  • Подформа (в макете) с Class (раскрывающийся список, содержащий цифры 1 -> 10) и Subject (содержащий, например, A -> D) образуют уникальную пару значений, для которых требуется оценка. Таким образом, выбор класса и предмета, ввод оценки и нажатие на кнопку «Добавить» должны «добавить» эту запись для учащегося. Затем пользователь должен иметь возможность нажать кнопку «Сохранить» (чтобы сохранить запись в базе данных) или добавить в нее дополнительные пары (класс, предмет, оценка).

Есть идеи, как правильно это реализовать? (Я из области ДВХ ... поэтому мысли без государства мне немного чужды.) Любая помощь приветствуется.

Я думаю, что разумное использование jQuery даст простое решение.

С уважением, Karan

Ответы [ 2 ]

1 голос
/ 30 апреля 2010

Хорошо, в этом случае я покажу вам, как я это сделал, используя несколько возможностей: Сначала я помещаю div внутри jquery с пустыми полями, например:

$("#add").click(function() {
    $("#classes").append($(
    "<div>" 
    +"   <select name='Student.Classes[0].Class'>"
    +"     <option value='1'>Class 1</option>"
            ....
    +"  </select>"
    +"   <select name='Student.Classes[0].Subject'>"
    +"     <option value='1'>Subject 1</option>"
            ....
    +"  </select>"
    +"  <input name='Student.Classes[0].Score' value='0'/>"
    +"</div>"
    )
);});

Этот div будет добавлен в список классов при нажатии на что-то с идентификатором #add.

Далее я перехватываю форму перед отправкой и даю каждой сущности (в данном случае Student.Classes) индекс, начинающийся с 0. Вот так:

 $("form").submit(function () {
        $("div", "#classes").each(function (i) {
            $(":input, :hidden", this).each(function () {
                $(this).attr("name", $(this).attr("name").replace(/\[0\]/, "[" + i + "]"));
            });
        });
    });

Если вы используете ModelBinder, который поддерживает дочерние объекты, это должно закончиться на сервере со списком Классов в Студенте. Конечно, вы можете использовать firebug, чтобы увидеть, что именно отправляется на сервер.

Надеюсь, это даст какое-то направление.

0 голосов
/ 30 апреля 2010

Это может быть немного излишним, но вам, скорее всего, будет полезно узнать об основах приложений и строительных лесах. Я бы начал здесь http://sharparchitecture.net/. После настройки базового приложения вы можете использовать jquery вместе с плагинами, такими как

  • JQuery формы

  • Проверка JQuery

для обработки формы до отправки. Есть немало плагинов, чтобы помочь с всплывающим окном.

Как передать произвольное количество дочерних объектов (например, классов ученика в вашем примере) - это действительно вопрос вашей конкретной реализации на стороне сервера. Это можно сделать довольно элегантно с архитектурой s # arp, но требует некоторой настройки формы перед отправкой.

Добро пожаловать в мир веб-форм без гражданства! и удачи, David

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...