Всплывающий диалог ASP.NET MVC 2 - производительность и странное поведение - PullRequest
0 голосов
/ 30 июня 2010

Я использую это в моем Index.aspx:

<%= Html.StandardOverlayCreateButton() %>
<div class="apple_overlay" id="overlay">
    <div class="contentWrap">
    </div>
</div>

Что переводится на это:

<a href="Employee/Create" rel="#overlay"><button type="button">Create</button></a>
<div class="apple_overlay" id="overlay">
    <div class="contentWrap">
    </div>
</div>

При нажатии кнопки появляется всплывающее окно с Create.aspx. Посмотрите на это -> Загрузка внешних страниц в оверлей

Мне кажется, что оверлейная производительность медленная.

И есть странное поведение, потому что я почти каждый раз вижу старые значения во всплывающем окне. Если я нажму кнопку редактирования, а затем закрою всплывающее окно и нажму другую кнопку редактирования, я смогу просмотреть старые значения в течение короткого времени.

Есть ли лучший подход для создания всплывающих окон с использованием ASP.NET MVC и jQuery?

Есть ли уроки?

Ответы [ 3 ]

1 голос
/ 30 июня 2010

Все делается на стороне клиента, поэтому производительность сводится исключительно к JavaScript и коду jQuery и не имеет ничего общего с любым кодом на стороне сервера, таким как ASP.NET MVC.

В этом всплывающем окне вы используете довольно много сложных эффектов, я вижу <div /> изменение размеров анимации, прозрачности, теней и т. Д. С недавними браузерами производительность JavaScript пошла не покладая рук, но это производительность, но она все еще будет медленной из-за очень экстравагантных визуальных эффектов. Вы пытались настроить визуальные эффекты с помощью любой модальной всплывающей библиотеки JavaScript, которую вы используете.

"И есть какое-то странное поведение, потому что я почти каждый раз вижу старые значения во всплывающем окне. Если я нажму кнопку редактирования, а затем закройте всплывающее окно и нажмите другую кнопку редактирования, я можно увидеть старые значения для короткого время. "

Я предполагаю, что всплывающее окно фактически загружает iframe, который указывает на страницу «Сотрудник / Создать». Я предполагаю, что когда всплывающее окно закрывается, а затем снова открывается с другой страницей, предыдущая страница все еще будет находиться в iframe всплывающего окна, а событие «load-new-page / url» isn ' до тех пор, пока не появится всплывающее окно, поэтому вы очень быстро видите старую страницу.

У меня была похожая проблема с этим, вам нужно немного настроить поведение модального всплывающего окна так, чтобы оно сначала загружало новую страницу, а затем открывало всплывающее окно, а не наоборот, как это происходит в настоящее время. Мое решение было немного хакерским в том, что на странице внутри iframe есть $ (document) .ready ({}); событие, которое вызвало некоторую функцию JavaScript для родительского элемента iframe для загрузки всплывающего окна. например. поместите это в свою страницу, которая находится внутри iframe:

<script type="text/javascript">

    $(document).ready(function()
    {
        window.parent.openPopup();
    });

</script>

Затем вам нужно определить метод JavaScript 'openPopup ()' в родительском элементе iframe (т. Е. На главной странице перечислены ваши записи).

1 голос
/ 30 июня 2010

вам действительно нужна анимация?

возможно, вам не нужен атрибут effect: 'apple'?

Эффекты медленные, особенно в IE.

http://flowplayer.org/tools/overlay/index.html#api

0 голосов
/ 01 июля 2010

Смотрите здесь - другой пост, но ответ связан с вашим вопросом о MVC & jQuery.

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