Как управлять сложной проверкой ввода данных - PullRequest
3 голосов
/ 18 октября 2010

Мне кажется, что я борюсь против течения, когда разрабатываю приложения ASP.NET Webform.Я часто сталкиваюсь с одними и теми же проблемами, и хотя в итоге я нахожу какой-то обходной путь, я никогда полностью не удовлетворен результатами.

Вот пример типичной проблемы:

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

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

Давайте добавим к этому миксу, что вы не можете выбирать определенные продукты вместе(взаимоисключающие), что вы можете выбрать только определенное количество одного товара, но не другого, цены могут изменяться, когда пользователь выбирает свои товары, что вы получаете общую скидку на единицу товара в зависимости от приобретенного количества (оба на единицу товара).и общий порядок), что вы используете кредитную линию и не можете превысить кредитную линию, и при этом вы не можете купить больше данного товара, чем произвольная сумма, установленная в вашей учетной записи или в продукте представительным для вашей учетной записи (подумайтеконтр-лекарства, которые правительство ограничивает, сколько вы можете купить) и т. д. и т. д. и т. п.

То, что начинается с простой сетки с добавлением в корзину, становится безнадежным беспорядком бизнес-логики, которыйтогда, конечно, требуется проверка и уведомление пользователя о различных ошибках, которые яn их выбор.

Как справиться с очень сложными схемами ввода данных в asp.net?Как вы вообще начинаете разрабатывать программное обеспечение для всего этого?

РЕДАКТИРОВАТЬ:

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

Ответы [ 2 ]

1 голос
/ 20 октября 2010

Не оставляйте ничего, кроме базовой проверки в вашем коде. Код должен просто взять то, что ввел пользователь, построить бизнес-объект (или коллекцию бизнес-объектов) и позволить этим бизнес-объектам проверять себя.

Каждое бизнес-правило должно представлять собой отдельный вызов функции бизнес-объекта, который имеет дело только с одним правилом и ничем иным. Затем вы просто вызываете их один за другим и отслеживаете, какие из них проходят, а какие нет.

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

1 голос
/ 18 октября 2010

Некоторые варианты для рассмотрения:

  • Отделите логику проверки, чтобы ее можно было вызывать как из кода на стороне клиента, так и на стороне сервера (включает следующую точку).
  • Используйте AJAX для выполнения проверки на стороне сервера и обеспечения немедленной обратной связи, когда пользователь выполняет различные задачи, то есть увеличивает количество.
  • Предоставлять пользователю обильные и четкие инструкции / отзывы как до, так и после выполнения каких-либо действий. До: предупредите, что продукт X нельзя купить вместе с продуктом Y (особенно если Y уже есть в корзине). После: точно объясните проблему и предложите способы ее устранения, например, «почему вы не удалите продукт Y?»)
  • Сбои изящны, т. Е. Если только один продукт не прошел проверку, убедитесь, что все остальные продукты добавлены.
  • Упростить процесс ввода, например, разрешить добавление в корзину только одного товара за один раз.

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

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