2014-10-16 55 views
0

我已經創建了一個Web表單,我可以在其中使用文本編輯器將文章插入數據庫。我的文章表有以下字段名稱; ID,標題,內容,類型和uploadDate。 '內容'字段名由文本組成。此文本還涉及來自另一個數據庫表(稱爲tag(即tag_id,名稱,類型))的數據,該數據表未鏈接到文章表。如何創建和輸出數據作爲鏈接?

當我查看網頁表單的文章,它們看起來像如下面的輸出:

Pellentesque eget elit tag1. Vivamus ut lacinia lectus. Mauris eu efficitur mi. 
Nam blandit est ut justo scelerisque, in sagittis nibh scelerisque. 
tag2 placerat id risus ut aliquam. Vestibulum maximus rutrum arcu et sagittis. 

我的問題,就是如何才能讓我的文章的內容看起來像下面所需的輸出:

Pellentesque eget elit ***tag1***. Vivamus ut lacinia lectus. Mauris eu efficitur mi. 
Duis placerat id risus ut aliquam. Vestibulum maximus rutrum arcu et sagittis. 
***tag2*** id consequat dui. Suspendisse non imperdiet odio. 

顯示,標籤的名稱(tag1 & tag2)作爲鏈接,在文章的內容。鏈接將由某種查詢字符串組成,點擊後會呈現給網頁,該網頁包含該標記的ID記錄(通過DataTable)。我知道,這種方法會要求我爲標記的名稱創建超鏈接,但我不太確定,我將如何去動態創建它(即將[tag1,tag2]的所有實例設置爲超鏈接)。我是否需要在文章的插入方法或我的文章的getData()方法中創建此任務?

任何幫助將非常感激。非常感謝

+0

沒有一個完整的答案,但要開始,你需要一個豐富的文本框,而不是一個標準的文本框。 – 2014-10-16 14:26:55

+0

我正在使用tinymce文本編輯器插入文章到我的數據庫中,這是你的建議。謝謝您的回覆。 – user3070072 2014-10-16 14:29:01

回答

1

我有點不確定您的文章是否可以在文本框中單擊鏈接進行編輯。我假設沒有,並且這是現有文章的查看頁面。

如果這是有很多方法可以做到這一點的話,我個人建議你使用HtmlGenericControl

protected override void OnPreRender(EventArgs e) 
{  
    var ctrl = new HtmlGenericControl("div"); 
    string html = this.GetArticleText(); 

    // create the html formatted HTML/Links taking into account anti-xss attacks 
    foreach(var tag in this.LoadAllTags()) 
    { 
     html.Replace(tag.Key, this.CreateLinkHtml(tag); 
    } 

    ctrl.InnerHtml = html; 

    this.SomePageContainer.Controls.Add(ctrl); 

    base.OnPreRender(e); 
} 
+0

謝謝你的回答。這是一個很好的起點。我想問一個最後一個問題,那就是我將這個邏輯放在我的insert()方法的內部,或者創建一個新方法並將它連接到'insert()'和'getArticle()'方法。非常感謝。 – user3070072 2014-10-16 14:37:22

+0

@ user3070072我編輯了我的答案 - 我個人會將其放入OnPreRender部分。這樣它就會在您稍後可能添加的任何事件之後調用。顯然你需要自己添加GetArticleText(),LoadAllTags()和CreateLinkHtml()方法。 – Liath 2014-10-16 14:40:45

+0

啊......這開始變得更有意義了。非常感謝你的時間和支持。 「LoadAllTags()」方法的目的是從標籤數據庫中調用所有標籤的名稱?如果是這樣,我有超過15萬條記錄......這樣可以嗎?請進一步諮詢。謝謝 – user3070072 2014-10-16 14:48:17