ФорумПрограммированиеПыхнуть хотите?Готовые решения → Оцените наш проект

Оцените наш проект

  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 18:10, спустя 3 минуты 28 секунд

    Абырвалг, формы для кого - для внутреннего пользования или для гостей? Если для внутреннего то у меня есть генератор форм. Там валидация, хуяция, проверка на уникальность аяксом и т.д.
    не всё полезно, что в swap полезло
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 18:20, спустя 10 минут 1 секунду

    обыкновенные такие формы - админские (тут может быть extJS будет), юзерские - добавить запись в блог, добавить коммент, создать событие, добавить место встречи и тд
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 18:48, спустя 28 минут 19 секунд

    Абырвалг, там дохуя. формы - это половина еботни с проектом. я потратил на них не один месяц. Больше всего форм для модераторов контента, но они часто ненамного умнее анонимусов - точно также допускают тупорылые ошибки, вместо больших букв маленькие, вместо дробной точки вставляют запятую, url могут написать по-русски и т.д.

    Типичные задачи для форм:
    - Валидация на клиенте и на сервере, проверка на уникальность
    - Блокировка спама
    - Отбрасывание непредусмотренных полей
    - Вырезание всякого говна из текста (контрольных символов, например), xss-чистка
    - Связь формы с таблицей БД
    - Работа с файлами (отдельный головняк), в частности с отображением миниатюр картинок, замена/удаление при замене/удалении
    - Сортировка записей
    - Подключение визуального редактора
    - Динамическое расширение форм, добавление полей
    - Задание пользовательских стилей
    - Некоторые поля можно только создавать но нельзя редактировать
    - Некоторые поля влияют на другие поля
    - На некоторые поля формы задаются права на редактирование
    - Отправка форм без перезагрузки, в том числе форм с файлами
    - Отображение записей списком, постраничная разбивка, сортировка по столбцам
    - ВНЕЗАПНО!!! понадобилось добавить ещё несколько полей в рабочую форму

    Обычно одна форма - одна таблица - одна модель. Удобно когда можно написать

    <?xml ?>
    <form>
     <fields>
       <field name=&quot;bla&quot; type=&quot;bla&quot;/>
       <field name=&quot;blabla&quot; type=&quot;bla&quot;/>
       <field name=&quot;blablabla&quot; type=&quot;bla&quot;/>
     </fields>
    </form>

    сделать под неё таблицу, и у тебя хуяк - весь функционал.

    Сейчас могу десяток этих ебучих форм с моделями сделать за день. Вручную всё выписывать - неделю б ебался. {+++51+++} Вот так это выглядит для анонимусов http://www.vtimport.ru/makeorder/
    не всё полезно, что в swap полезло
  • Frozzeg

    Сообщения: 5642 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 18:48, спустя 23 часа 59 минут 36 секунд

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

    public class RegisterModel
       {
           [Required]
           [Display(Name = &quot;User name&quot;)]
           public string UserName { get; set; }

           [Required]
           [DataType(DataType.EmailAddress)]
           [Display(Name = &quot;Email address&quot;)]
           public string Email { get; set; }

           [Required]
           [ValidatePasswordLength]
           [DataType(DataType.Password)]
           [Display(Name = &quot;Password&quot;)]
           public string Password { get; set; }

           [DataType(DataType.Password)]
           [Display(Name = &quot;Confirm password&quot;)]
           [Compare(&quot;Password&quot;, ErrorMessage = &quot;The password and confirmation password do not match.&quot;)]
           public string ConfirmPassword { get; set; }
       }


    теперь можно обработать запрос

    public class AccountController : Controller
       {
           [HttpPost]
           public ActionResult Register(RegisterModel model)
           {
               if (ModelState.IsValid)
               {
                   // ok
               }
               // ne ok

               return View();
           }
       }
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 18:56, спустя 8 минут 28 секунд

    а как настроить рендеринг формы? Это типа через аннотации ты так задал лейбочки?
  • master

    Сообщения: 3236 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 18:58, спустя 1 минуту 24 секунды

    а как настроить рендеринг формы? Это типа через аннотации ты так задал лейбочки?

    это ты кому?
    не всё полезно, что в swap полезло
  • Абырвалг

    Сообщения: 6477 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 19:36, спустя 37 минут 54 секунды

    Фроззегу
  • Frozzeg

    Сообщения: 5642 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 19:47, спустя 11 минут 21 секунду

    Это типа через аннотации ты так задал лейбочки?

    да

    @using (Html.BeginForm()) {
    @Html.ValidationSummary(true, &quot;Account creation was unsuccessful. Please correct the errors and try again.&quot;)
    <div>
    <fieldset>
    <legend>Account Information</legend>

    <div class=&quot;editor-label&quot;>
    @Html.LabelFor(m => m.UserName)
    </div>
    <div class=&quot;editor-field&quot;>
    @Html.TextBoxFor(m => m.UserName)
    @Html.ValidationMessageFor(m => m.UserName)
    </div>

    <div class=&quot;editor-label&quot;>
    @Html.LabelFor(m => m.Email)
    </div>
    <div class=&quot;editor-field&quot;>
    @Html.TextBoxFor(m => m.Email)
    @Html.ValidationMessageFor(m => m.Email)
    </div>

    <div class=&quot;editor-label&quot;>
    @Html.LabelFor(m => m.Password)
    </div>
    <div class=&quot;editor-field&quot;>
    @Html.PasswordFor(m => m.Password)
    @Html.ValidationMessageFor(m => m.Password)
    </div>

    <div class=&quot;editor-label&quot;>
    @Html.LabelFor(m => m.ConfirmPassword)
    </div>
    <div class=&quot;editor-field&quot;>
    @Html.PasswordFor(m => m.ConfirmPassword)
    @Html.ValidationMessageFor(m => m.ConfirmPassword)
    </div>

    <p>
    <input type=&quot;submit&quot; value=&quot;Register&quot; />
    </p>
    </fieldset>
    </div>
    }


    форма храниться в файле Register.cshtml, что соответствует названию метода Register, а файл этот лежит в папке Account, что соответствует названию контроллера и рендериться при вызове метода View()
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.
  • Frozzeg

    Сообщения: 5642 Репутация: N Группа: Джедаи

    Spritz 3 февраля 2011 г. 19:59, спустя 12 минут 1 секунду

    можно также явно указать имя файла, который нужно отобразить View(&quot;RegisterSuccess.cshtml&quot;), или передать туда некоторые параметры, а потом с ними работать

    public class AccountController : Controller
    {
    [HttpPost]
    public ActionResult Register(RegisterModel model)
    {
    if (ModelState.IsValid)
    {
    ViewData.Message = &quot;The Title&quot;;
    }
    // ne ok

    return View();
    }
    }

    <h2>View.Message </h2>

    {+++282+++} соответственно Message это динамическое свойство, может быть любым
    You can be anything you want to be. Just turn yourself into anything you think that you could ever be.

Пожалуйста, авторизуйтесь, чтобы написать комментарий!