Модераторы: gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Script services и ScriptResource.axd, JavaScript и веб-сервис 
:(
    Опции темы
Dedal
  Дата 31.7.2009, 20:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 6.5.2004

Репутация: нет
Всего: нет



День добрый. Есть такая поблема.
Решил использовать на странице вызов веб-сервиса JavaScript'ом, чтобы избежать лишних постбэков и перезагрузки страницы, потому что на ней слишком много данных, которые к тому же часто обновляются, и использование UpdatePanel не вариант.
Суть в следующем. По клику на элемент интерфейса срабатывает javascript, который вызывает мой же веб-сервис. Веб сервис в ответ высылает кусок разметки, которую надо вставить на страницу.
Метод веб-сервиса, который принимает вызов:
Код

public string GetItem(int position)
        {
            //...пропущено

            return ViewManager.RenderView("/Sublayouts/SiteName/SelectionItem.ascx", SearchResults[position]);
        }


Тут мы берем юзер контрол и задаем ему данные, из которых он инициализирует свои контролы.
Код

public class ViewManager
    {
        public static string RenderView(string path, object data)
        {
            Page pageHolder = new Page();
            UserControl viewControl = (UserControl)pageHolder.LoadControl(path);

            if (data != null)
            {
                if (viewControl is IViewItem)
                    ((ICarouselItem)viewControl).Wine = (Wine)data;
                else
                    throw new Exception("View file: " + path + " does not implement IViewItem interface.");
            }

            pageHolder.Controls.Add(viewControl);

            StringWriter output = new StringWriter();
            try
            {
                HttpContext.Current.Server.Execute(pageHolder, output, false);
            }
            catch(Exception ex)
            {
                //...
            }

            return output.ToString();
        }

    }


Все работает: вызывается, возвращается, обновляется на странице. Но есть одно "но". Если посмотреть на страницу в Firebug ( закладка Script) при первой загрузке, то там есть 4 штуки ScriptResource.axd и один WebResource.axd. При каждом вызове вышеописаного механизма появляется дополнительных два ScriptResource.axd. Поскольку все это отрабатывает на странице многократно, то через некоторое время их появляются десятки и клиентская часть начинает ощутимо медленнее рабоать.
Один из появляющихся SriptResource.axd содержит следующее (разметка, которую вернул веб-сервис):
({d: "\r\n \r\n <a href=\"#null\">\r\n <ins>\r\n <div id=\"ctl00_divVisual\" class=\"plAlternative\" 
..................... 
</a>\r\n \r\n"});
 /* !eval(new String(value);)) */

Второй вот такой:
Sys.Net.XMLHttpExecutor;
/* !eval(new String(value);)) */

Вопрос: можно ли избавиться от такого количества ScriptResource.axd?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Любитель
Mymik
mr.DUDA

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Любитель, Mymik, mr.DUDA.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Разработка под ASP.NET | Следующая тема »


 




[ Время генерации скрипта: 0.0561 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.