2012-10-03 43 views
-1

我已經在ASP.NET中編寫了一個函數來創建上下文鏈接。它從Tridion中的組件的描述字段獲取數據。我使用'RenderComponentField'從描述字段中挑選數據,該字段使用所有HTML標籤提取數據的完整源。刪除用於創建上下文鏈接的HTML標記

該代碼工作正常。然而,當它獲得我們想要在某些HTML標籤中生成上下文鏈接的'文本'時,如錨標籤等,它會失敗。它從HTML標籤中選取文本並在其中創建鏈接,從而打破HTML。

就像,我們要創建上下文鏈接文本「啞」,我們只要在我們的HTML作爲

<a href="http://www.dummy.com">Dummy</a> 

一個錨鏈接,因爲它認爲在「HREF」文本啞,它創建鏈接,然後在那裏打破HTML。

請爲此提供解決方案。可能是繞過HTML標籤或任何類型的正則表達式。

乾杯, Anubhav

+4

嗨,這恐怕沒什麼意義,也許你可以提供你的代碼和一些關於你正在使用的模式的更多細節,加上'tridion'給你什麼,以及你想看到什麼 – johnwinter

+0

@johnwinter在上面的文字中做了一些小改動。希望能夠幫助你清楚地理解問題。問候,Anubhav –

回答

1

我不完全得到這個問題,你的意思與「上下文鏈接」的內容。你說你從「描述」字段中選擇數據,它是什麼類型的字段? (我認爲這是一個RTF,因爲你說「它拿起所有的HTML標籤的數據的完整來源」)

你可能會發布什麼樣的HTML你期望得到,以及什麼你真的得到了嗎?

+0

嗨,上下文鏈接的概念很簡單。你有一個關鍵字說'abc'。每當您在網站上的一段文字中找到它時,您都希望將其轉換爲網址。你是對的。我在這裏討論的文字是Rich text格式。我想說的是,我的代碼選擇了文本的來源,並且如果它在html中的任何位置找到關鍵字,它就會自己創建一個鏈接並打破HTML。我編輯了我上面提出的問題。希望能幫助你理解問題陳述。問候,Anubhav –

+0

仍然不清楚,您可以在@@ RenderComponentField()@@執行之前發佈HTML輸出,您在Template Builder(或發佈者)中獲得的錯誤消息以及您期望的HTML輸出?另外,你寫的是一個源函數?或一個C#模板構建塊? –

0

如果你想使用正則表達式,你可以用它喜歡

search = "(dummy)"; 
    replace = "<a href=\"$1\" target=\"_blank\">$1</a>"; 
    Regex.Replace(stringToSearch, search, replace); 

,但不知道你的要求,所以不建議在何處使用上面的代碼。