這是我的文章備份,原作請看:http://www.dotblogs.com.tw/mis2000lab/archive/2015/06/12/searchengine_class_sample_20150612.aspx

[微軟範例] 簡單搜尋引擎 #1 (Model Binding / 類別檔入門)& 關鍵字的「高亮度(HighLight)」顯示

 

上一週課程提到 Model Binding

(相關文章請看 http://www.dotblogs.com.tw/mis2000lab/Tags/Model%20Binding/default.aspx

 

入門者 寫一個簡單的類別檔,以「公開屬性」對應資料表的「欄位」

 

微軟的網站有一個範例也用到這樣的作法,而且更簡單。

因為他的資料表跟我上課的 test資料表(新聞資料表)很類似

可以當成補充教材。

 

**************************************************************************************

C# / VB範例都有提供:https://code.msdn.microsoft.com/Implement-Search-Engine-in-cc2ca84e

 

作者是One Code Team,我猜是: "一站式程式範例庫" 提供的

[下載]微軟 All-In-One Code Framework / 一站式程式範例庫

**************************************************************************************

 

 

Article.cs類別檔

    /// <summary>
    /// 用來表示資料庫的「一筆記錄」。
    /// </summary>
    public class Article
    {
        public long ID { get; set; }         // 文章編號(公開屬性)
        public string Title { get; set; }      // 文章標題(公開屬性)
        public string Content { get; set; }   // 文章內容(公開屬性)
    }
 
 
另一個類別檔,DataAccess.cs裡面則是 資料存取 的方法。
程式碼都很簡單,只有幾段ADO.NET而已。
 
僅列出一部分進行說明:
 
// 註解:您在程式碼看到List的資料型態<Article>
就是上一個Article.cs類別檔用來對應資料表「欄位」的「公開屬性」。VB語法寫成List(Of Article)。
 
public List< Article> GetAll()  {
      // 取得資料表裡面的所有紀錄
return QueryList("select * from [Articles]");
}
 
 
protected List< Article> QueryList(string cmdText)  {
      List< Article> articles = new List< Article>();
 
      SqlCommand cmd = GenerateSqlCommand(cmdText);  
//本類別檔裡面的 另一個函式
 
      using (cmd.Connection)   {
          SqlDataReader reader = cmd.ExecuteReader();
 
          if (reader.HasRows)   {
              while (reader.Read())   {
                  articles.Add(ReadArticle(reader));
                  // 把找到的文章,放到 List<Article>裡面。
              }
          }
      }
      return articles;   // 傳回值,資料型態 List<Article>
}
 
 
------ 原廠的範例,有個小Bug。------
 
您按下搜尋按鈕,關鍵字的「高亮度(HighLight)」顯示
    會把大寫變成小寫,因為他的JavaScript裡面 RegExp用到 "igm" 代表忽略大小寫。
    如果您剛好搜尋「a」這個字,會讓「超連結」損毀。因為超連結的字串就是寫成 <a> ... </a>
 
因為他的「高亮度」顯示的功能,是透過 JavaScript來作,透過 .Replace()來作文字的替換,
把「關鍵字」加上黃色底色。

下一篇文章用一些方法,稍做改寫。請參閱:

[微軟範例] 簡單搜尋引擎 #2 (Model Binding / 類別檔入門)& 關鍵字的「高亮度(HighLight)」顯示

 

 

 

如果您想作一個簡單的資料庫搜尋、站內文章(產品)搜尋,可以參考以前文章:

[文章下載]網站內的搜尋引擎,單一欄位與多重欄位的搜尋(自己手寫SqlDataSource與SelectParameter參數)

 

並請牢記:使用 Parameter寫法,避免SQL Injection攻擊。

[FAQ] ADO.NET 參數寫法 Parameter(避免SQL Injection資料隱碼攻擊)

 

Microsoft Anti-XSS (Anti-Cross Site Scripting Library) 避免XSS攻擊

 

arrow
arrow

    MIS2000 Lab 發表在 痞客邦 留言(0) 人氣()