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

Источник: lred.ru

Оцените статью
новости для мужчин