ASP.NET MVC: Ускоритель поиска для IE с подсказками
В качестве вступления
На сайте http://www.iegallery.com в разделе надстройки существует огромного количество.
Можно написать свой ускоритель и добавить в список. В этой статье будем делать ускоритель поиска.
Опять MvcTools
Буду снова использовать MvcTools (можно установить через nuget менеджер). В сборке существует SuggestResult и еще один важный интерфейс ISuggestable. Итак, я хочу, чтобы поиск и подсказка через строку браузера осуществлялся по музею юмора. Для этого сначала создаю новый класс ExhibitSuggest:
1: publicclass ExhibitSuggest : ISuggestable {
2: private Exhibit _model;
3:
4: public ExhibitSuggest(Exhibit model) {
5: this._model = model;
6: }
7:
8: publicstring Title {
9: get { return _model.Title; }
10: }
11:
12: publicstring Description {
13: get {
14: if (_model.Hall != null) {
15: return _model.Hall.Name;
16: }
17: returnstring.Empty;
18: }
19: }
20:
21: publicstring Url {
22: get {
23: returnstring.Format("http://www.calabonga.com/museum/show/",
24: _model.Id.ToString());
25: }
26: }
27:
28: }
Обратите внимание на то, что этот класс реализует интерфейс озвуяенный выше.
Метод поиска
Создаем в контролере Site новый метод, который будет искать данные и возвращать SuggestResult:
1: public ActionResult Suggest(string text) {
2: var items = exhibitRepository.AllIncluding(x => x.Hall)
3: .Where(x=>x.Title.StartsWith(text)).ToList();
4: List<ExhibitSuggest> result = null;
5: if (items.Any()) {
6: result = new List<ExhibitSuggest>();
7: items.ForEach(x=>result.Add(new ExhibitSuggest(x)));
8: }
9: returnnew SuggestResult(result, text);
10: }
Программирование закончено, осталось сделать соответствующую html-разметку.
Только для IE
Раз мой сайт поддерживает поиск с подсказками, мне надо об этом “сообщить” браузеру. Чтобы IE мог уведомить посетителя сайта, а также мог предложить установить этот самый ускоритель поиска.
Для этого нужно в заголовке странице в теге <head> установить следующий параметр:
1: <linktitle="Музей юмора"rel="search"
2: type="application/opensearchdescription+xml"
3: href="http://www.calabonga.com/extensions/search.xml"/>
Третья строка указывает на специальный файл с настройками для браузера IE, которые ему пригодаятся, чтобы реализовать поиск по вашему сайту. Вот содержимое этого файла:
1: <?xmlversion="1.0"encoding="UTF-8"?>
2: <OpenSearchDescriptionxmlns="http://a9.com/-/spec/opensearch/1.1/">
3: <ShortName>Музей юмора</ShortName>
4: <Imageheight="16"width="16"
5: type="image/icon">http://www.calabonga.com/favicon.ico</Image>
6: <Urltype="text/html"
7: template="http://www.calabonga.com/site/suggest?text={searchTerms}"/>
8: <Urltype="application/x-suggestions+xml"
9: template="http://www.calabonga.com/site/suggest?text={searchTerms}"/>
10: </OpenSearchDescription>
В строках 5, 7 и 9 поставьте свои параметры. QueryString – параметр может быть любой, а вот название в фигурных скобках фиксировано спецификацией IE.
Установка ускорителя IE
Теперь на странице музея юмора надо сделать кнопку, которая сможет установить этот ускоритель поиска в браузер посетителя, если он пожелает.
Помините, что для других браузеров такой функции пока не существует, а значить показывать эту кнопку пользователю другого браузера, по меньшей мере не этично. Поэтому сделаю так:
1: <!--[if gte IE 7]>
2: <p>
3: <a href="#" class="backblue rounded"
4: title="Добавляет провайдера поиска для IE7 и выше.
5: Позволит быстро осуществлять поиск в музее юмора из панели поиска IE"
6: onclick="window.external.AddSearchProvider('http://www.calabonga.com/extensions/search.xml');
7: return false;">
8: <span>Добавить поиск в IE</span>
9: </a>
10: </p>
11: <![endif]—>
Набираем что-нибудь в поиске и видим:
Вот и всё.
Подробнее: http://feedproxy.google.com/~r/blogmusor/~3/5cyNR3gWlq8/90
Дайджест новых статей по интернет-маркетингу на ваш email
Новые статьи и публикации
- 2024-03-13 » Стратегии SEO на 2024 год
- 2024-03-13 » Как использовать анимацию с помощью JavaScript-библиотеки GSAP
- 2024-03-13 » Использование GSAP 3 для веб-анимации
- 2024-03-13 » Cогласование топографической съёмки с эксплуатирующими организациями
- 2024-02-19 » Теряются лиды? Как настроить сквозную аналитику
- 2024-02-17 » Мерч и IT: на что обратить внимание в 2024 году
- 2024-02-16 » Копируем с RSync: основные примеры синхронизации файлов
- 2024-02-15 » Лучшие noCode AI платформы для создания диалоговых ботов
- 2024-02-14 » Факторы ранжирования Google 2024 — исследование Semrush
- 2024-02-12 » Перенос сайта на другой хостинг
- 2024-02-05 » В России сформирован реестр хостинг-провайдеров
- 2024-02-04 » Использование SSH для подключения к удаленному серверу Ubuntu
- 2024-02-03 » Подключаемся к серверу за NAT при помощи туннеля SSH. Простая и понятная инструкция
- 2024-02-02 » Настройка CI/CD для Gitlab-репозитория: схемы и гайд по шагам
- 2024-02-01 » GitLab CI Pipeline. Запуск сценария через SSH на удаленном сервере
- 2024-01-29 » Introduction to GitLab’s CI/CD for Continuous Deployments
- 2024-01-26 » Настройка GitLab CI/CD
- 2024-01-25 » Установка shell gitlab runner
- 2024-01-25 » Установка и регистрация gitlab-runner в docker контейнере
- 2024-01-25 » Переменные Gitlab-Ci
- 2024-01-25 » Настройка CI/CD в GitLab для синхронизации проекта с веб-серверами
- 2024-01-25 » Копирование файлов scp
- 2024-01-21 » Бездепозитные бонусы от казино: обзор условий и правил использования
- 2024-01-18 » Современная обработка ошибок в PHP
- 2024-01-18 » Пример шаблона проектирования MVC в PHP
- 2024-01-18 » Мифический человеко-DevOps
- 2023-12-28 » Google подвел итоги 2023 года в поиске
- 2023-12-28 » 5 ошибок отдела продаж, из-за которых вы теряете клиентов
- 2023-12-28 » Американский суд признал монополию Google на рынках дистрибуции Android-приложений
- 2023-12-28 » Хостинг-провайдер GoDaddy перестанет оказывать услуги пользователям из России
«Если компания не представлена в интернете, ее попросту нет» |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.