2013-03-15 54 views
0

我的網站目前將自定義多功能框搜索引擎使用下面的代碼瀏覽器:OpenSearch的自動完成與ASP.net

ombnibox.xml

<?xml version="1.0"?> 
<OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"> 
    <ShortName>Example </ShortName> 
    <Description>Example Search</Description> 
    <Url type="text/html" template="http://Example.com /search.aspx?searchVal= {searchTerms}"></Url> 
</OpenSearchDescription> 

我的網站母版頁包括:

<link type="application/opensearchdescription+xml" title="Example" rel="search" href="/omnibox.xml" /> 

這很好,用戶可以毫無問題地進入我的搜索結果頁面。我想將搜索建議整合到這個自定義搜索引擎中,但我甚至不知道從哪裏開始。我發現了一堆返回JSON的PHP示例,但我找不到一個ASP.net的示例或從數據庫中檢索結果建議的示例。

任何幫助都會很棒。

回答

0

我深入瞭解了這一點,並且我能夠創建一個web服務,它返回正確格式化的JSON值,供Omnibox 使用!!但是! Omnibox代碼要求調用「GET」請求來訪問默認情況下由ASP.net阻止的Web服務。一旦我重寫ASP.NET的默認設置以允許GET請求,它只會允許我返回XML格式的值。

我目前的設想是,除非我創建一個non-ASP.net網絡服務,否則使用Omnibox輸入功能不是一個選項。

UPDATE

我能想出解決辦法使用ASP.NET MVC的WebAPI和下面的代碼:

public object Get(string id) 
    { 
     List<ResultObject> resultValues = new List<ResultObject>(); 

     foreach (string val in ***SQLQUERYRESULTS***) 
     { 
      test singleResult = new ResultObject(); 
      singleResult.Name = val; 
      singleResult.Description = "Server"; 
      singleResult.Url = "***CUSTOMURL***?ServerName=" + val; 
      resultValues.Add(singleResult); 

     } 
     var entities = resultValues; 
     var names = entities.Select(m => m.Name); 
     var description = entities.Select(m => m.Description); 
     var urls = entities.Select(m => m.Url); 
     var entitiesJson = new object[] { id, names, description, urls }; 

     return entitiesJson; 
    } 
} 


public class ResultObject 
{ 
    public string Name { get; set; } 
    public string Description { get; set; } 
    public string Url { get; set; } 

} 
0

你需要下面一行添加到您的xml文件

<Url type="application/x-suggestions+json" method="get" template="http://www.domain.co.uk/autocomplete" /> 

,並得到結果的格式如下:

["bm",["BMW","BMW X5","BMW X3","BMW 5 Series","BMW 1 Series","BMW 1 Series Cabriolet","BMW 3 Series","BMW Z4","BMW 3 Series Compact","BMW 116i"]] 

看一看Mozilla's documentation

我希望這有助於您。