Несколько приложений .NET в приложении с вкладками - PullRequest
0 голосов
/ 02 апреля 2012

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

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

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

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

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

Спасибо.

Ответы [ 3 ]

0 голосов
/ 02 апреля 2012

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

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

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

0 голосов
/ 02 апреля 2012

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

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

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

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

  1. Тайм-ауты, если приложение скрыто и не получает ввод, будет ли оно превышено?
  2. Междоменный сценарий, если они не все в одном домене
  3. Для печати может потребоваться решение с индивидуальным кодом в зависимости от того, как вы хотите, чтобы оно выглядело
0 голосов
/ 02 апреля 2012

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

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