2012-10-03 45 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); 

,但不知道你的要求,所以不建议在何处使用上面的代码。