修改sc:Link以使其不呈现href但是onclick事件

时间:2015-09-08 12:31:10

标签: sitecore sitecore7 html-rendering

我想修改sitecore sc:Link控件,以便它不会使用href呈现标记。我希望它将js函数称为onClick事件。

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

我应该覆盖哪个类?

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

1 个答案:

答案 0 :(得分:1)

我很开心搞清楚这一点 - 因为它发生的事情并不太复杂。

我发现的第一件事是Sitecore的链接不是用户控件,它们是Web控件 - 我之前没有真正合作过,​​所以我不明白我刚刚完成的一半。

在内部,看起来Sitecore的FieldControl类只是将一堆属性收集在一起以呈现该链接元素 - 因此我们能够覆盖 PopulateParameters 虚拟方法(确保我们调用base方法使默认行为仍然发生)然后指定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