Как организовать контроль ASP.NET Wizard со многими связями данных - PullRequest
1 голос
/ 02 февраля 2009

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

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

РЕДАКТИРОВАТЬ: Я должен добавить, что я видел большинство учебников по управлению волшебством там, но ни один из них, кажется, не касается того, что я пытаюсь сделать. В частности, необходимость сохранять и извлекать данные между этапами и как предотвратить повторное извлечение этих же данных при повторном посещении шага.

1 Ответ

0 голосов
/ 02 февраля 2009

То, что вы сделали, звучит разумно. Можете ли вы более конкретно рассказать о проблеме, с которой вы столкнулись?

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

Если вы ищете примеры того, как реализовать конечный автомат, у меня есть тестовое приложение, которое просматривает диалоги, как элемент управления мастера, за исключением использования javascript. Извлеките http://main(dot)test.wishpot.com/WaveDataCollection.Frank/, после того, как вы попадете на страницу CollectSamples.aspx, продолжайте и просмотрите исходный код, затем начните просмотр в функции GotoState.

Конечные автоматы немного различаются в C #, главное отличие в том, что объект состояния - это абстрактный класс с фиксированным числом обработчиков событий, каждое состояние которого наследуется от этого класса, реализуя каждый обработчик (некоторые, возможно, выдают исключение). С javascript нам не нужен абстрактный класс состояний ... Кроме того, делая это на стороне сервера, вам нужно будет иметь возможность сопоставлять идентификатор состояния, хранящийся в вашей базе данных, с классом состояния.

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