2012-04-02 5 views
0

У нас есть несколько довольно больших веб-проектов ASP.NET, которые мы попросили объединить под одним интерфейсом с вкладками. Так, например, когда вы нажимаете вкладку 1, мы будем показывать проект A внизу. Затем, если вы нажмете на вкладке 2, мы покажем проект B. Я ссылаюсь ниже на каждый проект как на «приложение», потому что они выполняют разные функции для наших пользователей.Несколько приложений .NET в приложении с вкладками

У кого-нибудь есть хороший способ сделать это? Одна из основных проблем заключается в том, что каждое приложение должно запоминать состояние. Поэтому, если пользователь находится на полпути через заполнение веб-формы на App A/tab 1, то они нажимают на другую вкладку, чтобы немного поработать над чем-то, когда они вернутся в приложение A/tab 1, они должны увидеть их полузаполненные (который еще не сохранен в базе данных).

Мы обсудили несколько вариантов: iframe может быть возможностью, но мы боимся заявить об этом, потому что они могут выходить из моды, и они могут изменять размер и печатать проблемы. Мы не думаем, что можем просто вставлять каждое приложение в a и скрывать/показывать его при нажатии между вкладками, потому что размер страницы будет очень большим, если у вас много вкладок, и у нас возникнут проблемы, когда .NET Приложение/страница запускает обратную передачу (многие из наших приложений используют ретрансляцию традиций .net).

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

Есть ли у кого-нибудь идеи о том, как «обернуть» несколько приложений .NET в один интерфейс с вкладками? Или это просто невозможно? Или неправильно списывать решение iframe? Каждый проект .net может быть представлен в iframe, который просто скрыт, если не отображается?

Спасибо.

+0

, какая технология? Winform/wpf? –

+0

Будет ли работать приложение winforms с элементами управления вкладками и элементами управления WebBrowser? –

+0

Это веб-проекты ASP.NET. Каждый из них выполняет определенную функцию, поэтому я называю приложение. Это для финансовой фирмы, поэтому одно «приложение» может предоставить информацию о транзакциях, а другое может обеспечить исследование фондового рынка. Все выполняют обратную передачу страницы .NET. – user1308260

ответ

0

В проектах, которые я работал над пользовательской инфраструктурой MVC, был разработан. Внутри вкладки у вас будет контроллер для каждой вкладки (приложения). Данные будут сохраняться в общем представлении, используя модель представления или модель, используемую для каждого приложения.

+0

Не могли бы вы дать мне более подробную информацию об этом? Как бы вы захватили состояние каждой страницы, прежде чем покинуть ее (чтобы ее можно было представить позже)? – user1308260

+0

@ user1308260 При работе на странице с вкладками вы фактически не оставляете, вы просто меняете элементы управления, которые видны. Кажется, вы покидаете пользователя, но вы все еще находитесь в той же форме. Единственный раз, когда вы меняете пользователя, будет потеряно, когда вызывается метод refresh()/reload() и, конечно, при закрытии формы. Это связано с тем, что все элементы управления связаны с использованием bindingSource, источником данных которого является модель. Эта модель извлекается во время обновления с контроллера и не имеет шансов повлиять на базу данных до ее сохранения. –

+0

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

0

Возможное решение может быть:

  • Изменить существующий WPF/WinForms приложения так, что главное окно не содержит ничего, кроме контроля одного пользователя. Вся прикладная логика должна быть , содержащейся в пользовательском элементе управления или элементах, содержащихся в элементе управления пользователя .
  • Создайте приложение «shell», которое содержит ссылку на сборку для других приложений.
  • Поместите пользовательские элементы управления, которые служат в качестве основного экрана на вкладках. Вы можете использовать WindowsFormsHost для размещения элементов управления Windows Forms в приложении WPF (или наоборот с помощью ElementHost).

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

+0

Извините, в моем первоначальном сообщении я должен был уточнить, что это веб-проекты .NET (не выигрывают приложения). – user1308260

+0

это веб-приложение в соответствии с OP, он говорит об iframes и браузерах –

0

Вариант 1 создать элемент управления пользовательского сервера для «закладки» и ссылаться на него в каждом из приложений, которые вы хотите, чтобы перейти к с вкладками. Вы будете иметь полный контроль над вкладками «щелчка» событий в каждом приложении, чтобы сохранить состояние. Каждое приложение может быть собственным веб-сайтом, если оно должно быть или просто развернуто как виртуальные серверы на одном сайте.

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

Вариант 2 Создание «главной страницы» и затем JavaScript на странице, чтобы скрыть и показать плавающие фреймы с каждым приложением в них. Вы можете использовать javascript, чтобы убедиться, что iframe всегда максимизируется до размера содержимого. В iframe вам не нужно беспокоиться о состоянии, так как все это будет в браузере одновременно.

Возможные проблемы:

  1. таймауты, если приложение скрыто и не получает входной сигнал, он будет тайм-аут?
  2. Крест скриптинг домен, если не все они находятся на том же домене
  3. Печать может потребовать пользовательского кодированный решения в зависимости от того, как вы хотите, чтобы она выглядела
+0

, поэтому вы говорите, что когда пользователь нажимает вкладку, каждое приложение должно будет сохранить свое собственное состояние? не было бы трудно сохранить половину введенных форм - каждый из которых имеет разные свойства/поля? Или можно ли вообще сохранить все содержимое любой веб-формы? Спасибо за вашу идею. – user1308260

+0

Я предположил, что вы управляете кодом приложения. Я не вижу, как вы можете поддерживать состояние приложения без этого контроля. – DancesWithBamboo

+0

Хотя я бы предпочел не переписывать код, у меня есть контроль над ним. Можете ли вы сказать мне, как приложение будет сохранять состояние, когда это состояние будет отличаться от многих разных веб-форм? Например, на одной странице могут быть отфильтрованные данные на основе выпадающего списка. Другая страница может быть более типичной веб-формой с полями/полями ввода для заполнения текстовых данных. Разве не каждый должен быть «жестко запрограммирован», чтобы сохранить введенные данные перед отъездом? И если это так, разве это не грандиозное начинание? Может быть, вы говорите, что я должен это делать. Еще раз спасибо. – user1308260

Смежные вопросы