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-11-26 » Капитан грузового судна, или Как начать использовать Docker в своих проектах
- 2024-11-26 » Обеспечение безопасности ваших веб-приложений с помощью PHP OOP и PDO
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-22 » Ошибки в Яндекс Вебмастере: как найти и исправить
- 2024-11-15 » Перенос сайта на WordPress с одного домена на другой
- 2024-11-08 » OSPanel 6: быстрый старт
- 2024-11-08 » Как установить PhpMyAdmin в Open Server Panel
- 2024-09-30 » Как быстро запустить Laravel на Windows
- 2024-09-25 » Next.js
- 2024-09-05 » OpenAI рассказал, как запретить ChatGPT использовать содержимое сайта для обучения
- 2024-08-28 » Чек-лист: как увеличить конверсию интернет-магазина на примере спортпита
- 2024-08-01 » WebSocket
- 2024-07-26 » Интеграция с Яндекс Еда
- 2024-07-26 » Интеграция с Эквайринг
- 2024-07-26 » Интеграция с СДЕК
- 2024-07-26 » Интеграция с Битрикс-24
- 2024-07-26 » Интеграция с Travelline
- 2024-07-26 » Интеграция с Iiko
- 2024-07-26 » Интеграция с Delivery Club
- 2024-07-26 » Интеграция с CRM
- 2024-07-26 » Интеграция с 1C-Бухгалтерия
- 2024-07-24 » Что такое сторителлинг: техники и примеры
- 2024-07-17 » Ошибка 404: что это такое и как ее использовать для бизнеса
- 2024-07-03 » Размещайте прайс-листы на FarPost.ru и продавайте товары быстро и выгодно
- 2024-07-01 » Профилирование кода в PHP
- 2024-06-28 » Изучаем ABC/XYZ-анализ: что это такое и какие решения с помощью него принимают
- 2024-06-17 » Зачем вам знать потребности клиента
- 2024-06-11 » Что нового в работе Яндекс Метрики: полный обзор обновления
- 2024-06-11 » Поведенческие факторы ранжирования в Яндексе
- 2024-06-11 » Скорость загрузки сайта: почему это важно и как влияет на ранжирование
Неудача — это не единичное внезапное событие. Ваш провал не возникает внезапно. Напротив, неудача появляется, когда вы совершаете одни и те же ошибки изо дня в день. Джим Рон |
Мы создаем сайты, которые работают! Профессионально обслуживаем и продвигаем их , а также по всей России и ближнему зарубежью с 2006 года!
Как мы работаем
Заявка
Позвоните или оставьте заявку на сайте.
Консультация
Обсуждаем что именно Вам нужно и помогаем определить как это лучше сделать!
Договор
Заключаем договор на оказание услуг, в котором прописаны условия и обязанности обеих сторон.
Выполнение работ
Непосредственно оказание требующихся услуг и работ по вашему заданию.
Поддержка
Сдача выполненых работ, последующие корректировки и поддержка при необходимости.