2015-09-08 58 views
0

我想修改sitecore sc:链接控制,以便它不会使用href呈现标签。我希望它调用一个js函数作为onClick事件。修改sc:链接,以便它不呈现href,但onclick事件

页面编辑器功能应该保持不变。

我应该重写哪一类?

我看着Sitecore.Web.UI.WebControls.Link和LinkProvider,但它们不包含呈现html的部分。

+0

任何机会,你可以简要解释什么onClick javascript将要做什么? –

+0

它会调用一个js函数。我们可以说doLinkAction(字符串LinkUrl,字符串LinkTargetType)。所以,它会写onClick =“doLinkAction(”Url“,”_blank“)” – EngelbertCoder

+0

你的实际问题引起了我的好奇心,所以我在看那个不管,这不是一个答案 - 但你有没有考虑只是添加一个类的链接和使用jQuery(或类似)来绑定页面加载时基于该类的点击事件? –

回答

1

嗯,我很乐意弄明白这一点 - 它发生时并不太复杂。

我发现的第一件事是Sitecore的链接不是用户控件,它们是Web控件 - 之前我没有真正使用它,所以我不了解我刚刚完成的一半。

内部,它看起来像Sitecore的FieldControl类只是汇总了一堆的属性里面来呈现链接元素 - 所以我们能够覆盖PopulateParameters虚方法(确保我们调用基方法,使默认行为仍然会发生),然后指定一个onclick属性。

所以这是我班的最终代码。

[ToolboxData("<{0}:JavascriptLink runat=server></{0}:JavascriptLink>")] 
public class JavascriptLink : Sitecore.Web.UI.WebControls.Link 
{ 
    protected override void PopulateParameters(SafeDictionary<string> parameters) 
    { 
     base.PopulateParameters(parameters); 
     parameters.Add("onclick", "alert('test')"); 
    } 
} 

然后你需要稍有不同,你将用户控制寄存器的控制 - 因为你在评论中提到的,你需要使用它在全球范围你可能会想在web.config中进行注册 - 我正在使用this page as a guide