溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

ASP.NET AJAX怎么實(shí)現(xiàn)論壇主題搜索

發(fā)布時(shí)間:2021-12-06 15:42:18 來(lái)源:億速云 閱讀:124 作者:iii 欄目:編程語(yǔ)言

這篇文章主要介紹“ASP.NET AJAX怎么實(shí)現(xiàn)論壇主題搜索”,在日常操作中,相信很多人在ASP.NET AJAX怎么實(shí)現(xiàn)論壇主題搜索問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”ASP.NET AJAX怎么實(shí)現(xiàn)論壇主題搜索”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

我們要看的***一個(gè)示例是對(duì)現(xiàn)有應(yīng)用程序的修改。我***聽(tīng)到這個(gè)想法是 Josh Ledgard設(shè)想在 MSDN 論壇里添加一個(gè)功能。目的是嘗試幫助用戶自己找到問(wèn)題的答案,以及限制重復(fù)發(fā)布的數(shù)量。一般來(lái)說(shuō),用戶在論壇中提出新問(wèn)題時(shí),他或她會(huì)輸入主題和問(wèn)題。他們通常都不會(huì)先進(jìn)行搜索,來(lái)查看是否已經(jīng)提出和回答過(guò)該問(wèn)題。輸入 AJAX。用戶輸入主題(并將 Tab 鍵移出該字段)后,我們基于該主題異步搜索論壇,并適時(shí)地向用戶顯示結(jié)果。有時(shí)這些結(jié)果會(huì)有幫助,有時(shí)候則不會(huì)。

為使結(jié)果有幫助,我們將修改 asp.NETPRO Reader's Choice Award for Best Forum Application, CommunityServer??上螺d的示例中不包含這一部分(或論壇)的代碼,但是您能在 http://communityserver.org/(英文)學(xué)到關(guān)于 CommunityServer 的更多知識(shí),并且可在其中應(yīng)用下面這些代碼片斷。

安裝 CommunityServer 并配置 Ajax.NET(已將引用和處理程序添加到 web.config)后,我們只需要進(jìn)行一些更改就可以獲得所需的功能。首先,我們轉(zhuǎn)到 CommunityServerForums 項(xiàng)目中的 CreateEditPost.cs 文件。將它視為此頁(yè)的后面的代碼,其中用戶可以添加新的發(fā)布。下面我們將添加啟用了 AJAX 的函數(shù)。

//C#:ASP.NET AJAX示例  [Ajax.AjaxMethod()]  public static ArrayList Search(string search)  {  SearchQuery query = new SearchQuery();  query.PageIndex = 0; //獲得前 10 個(gè)結(jié)果  query.PageSize = 10;  query.UserID = Users.GetUser().UserID;  query.SearchTerms = search;  return new ForumSearch().GetSearchResults(query).Posts;  }

我們能夠利用已經(jīng)在 CommunityServer 中創(chuàng)建的搜索功能,只需要我們的函數(shù)能應(yīng)用它。如往常一樣,類型必須使用 Ajax.NET 注冊(cè)。我們將在同一文件的 InitializeSkin 函數(shù)(將其視為 Page_Load)中進(jìn)行此操作。

//C#:ASP.NET AJAX示例  Ajax.Utility.RegisterTypeForAjax(typeof(CreateEditPost));

在轉(zhuǎn)跳到 JavaScript 之前,我們需要進(jìn)行***的服務(wù)器端更改。返回到 Ajax.NET 的自定義類(例如我們正在返回的 ArrayList 所包含的 ForumPost)必須標(biāo)有 Serializable 屬性。我們要做的是轉(zhuǎn)到 CommunityServerForums 項(xiàng)目中的 Components/ForumPost.cs 文件,并添加此屬性。

//C#:ASP.NET AJAX示例  [Serializable]  public class ForumPost :Post  {   ...  }

顯示時(shí),我們僅需要修改 CommunityServerWeb 項(xiàng)目中的 Themes/default/Skins/View-EditCreatePost.cs。首先,我們將觸發(fā)主題文本框的 onBlur 事件。

< asp:textbox onBlur="Search(this.value);" id="PostSubject" runat="server" ... />

接著,我們編寫 JavaScript Search 方法,以便調(diào)用服務(wù)器端 Search。

var oldValue = '';  function Search(value)  {   //不要再次搜索剛搜索過(guò)的內(nèi)容  //如果用戶向后或向前移動(dòng) Tab 鍵將會(huì)發(fā)生  if (value != oldValue)    {  CreateEditPost.Search(value, Search_CallBack);  oldValue = value;    }  }

***,剩下的就是處理響應(yīng)。由于上一個(gè)示例介紹了在表中顯示結(jié)果的稍微正規(guī)的方式,我們將僅僅創(chuàng)建一些動(dòng)態(tài)的 HTML,并將它粘貼到虛擬的 DIV 中。

function Search_CallBack(response)  {  //由于沒(méi)有結(jié)果時(shí)搜索功能將自動(dòng)重定向,  //因此,我們不能使用 response.error。  var results = response.value;  //如果我們沒(méi)有獲得結(jié)果  if (results == null)   {  return;   }  //我們用于放置結(jié)果的 DIV  var someDiv = document.getElementById("someDiv");  var html = "";  for (var i = 0; i <  results.length; ++i)   {  var result = results[i];  html += "< a target=_blank href='" + result.PostID  html += "/ShowPost.aspx'>";     html += result.Subject;  html += "< /a>< br />"  }  someDiv.innerHTML = html;  }

通過(guò)對(duì) CommunityServer 應(yīng)用程序的三個(gè)文件(加上用于配置的 web.config)稍微進(jìn)行修改,我們可以添加一些非常有用的功能。但是,只向現(xiàn)有的應(yīng)用程序添加啟用 AJAX 功能時(shí)要小心操作。正在進(jìn)行實(shí)際搜索的預(yù)先存在的 ForumSearch 類可能并不是為我們介紹的使用類型設(shè)計(jì)的。我們的代碼很可能會(huì)導(dǎo)致執(zhí)行一些額外的搜索,影響可能會(huì)很顯著。

到此,關(guān)于“ASP.NET AJAX怎么實(shí)現(xiàn)論壇主題搜索”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI