我想修改sitecore sc:Link控件,以便它不会使用href呈现标记。我希望它将js函数称为onClick事件。
页面编辑器功能应该保持不变。
我应该覆盖哪个类?
我查看了Sitecore.Web.UI.WebControls.Link和LinkProvider,但它们不包含呈现html的部分。
答案 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