2009-02-02 5 views
1

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

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

EDIT: Я должен добавить, что я видел большинство руководств по управлению мастером там, но ни один из них, похоже, не подходит к тому, что я пытаюсь сделать. В частности, необходимость сохранять и извлекать данные между этапами и как не допустить повторного получения этих же данных, если этот шаг будет повторно рассмотрен.

ответ

0

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

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

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

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

+0

Это не обязательно проблема. Меня просто беспокоило, насколько сложным было решение, чтобы получить результаты, которые я получил после. Я не был уверен, был ли более простой способ достичь той же цели. Есть ли у вас какая-либо другая информация/ссылки о реализации государственных машин с использованием серверных элементов управления? –

+0

Любое руководство по написанию государственных машин ... К сожалению, введение, которое я прочитал, было C специфическим (книга Миро Самека). Книга «Рефакторинг для шаблонов», вероятно, имеет хорошее отношение к ней, но у меня нет копии, чтобы проверить, хорошо ли она покрывает эту конкретную модель. –