我需要在任何地方向AudienceEditor
控件添加文本,因此我创建了一个自定义
class inheriting from `Microsoft.Office.Server.WebControls.AudienceEditor` class
public class AudienceEditorText : Microsoft.Office.Server.WebControls.AudienceEditor
{
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
Label lblText = new Label();
lblText.ID = "Note";
lblText.Visible = true;
lblText.Text = "Text Needs to be changed";
lblText.Attributes.Add("style", "color: red");
Controls.Add(lblText);
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
}
protected override void CreateChildControls()
{
base.CreateChildControls();
}
protected override void OnLoad(EventArgs e)
{
base.OnLoad(e);
}
}
并在web.config
中添加了以下标记 <tagMapping>
<add tagType="Microsoft.Office.Server.WebControls.AudienceEditor, Microsoft.Office.Server, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" mappedTagType="Hub.AudienceEditorProject.AudienceEditorText, Hub.AudienceEditorProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=df1f6b11d06cf6ca" />
</tagMapping>
我希望AudienceEditor
和EditForm.aspx
中的新类替换NewForm.aspx
控件,但这不起作用。我尝试调试自定义类,但执行没有进入项目,这意味着AudienceEditor
控件不会被替换。
视图源告诉Audience字段由Microsoft.Office.Server.WebControls.FieldTypes.SPFieldTargetTo类呈现,该类包含Microsoft.Office.Server.WebControls.FieldTypes.SpFieldTaretToControl,后者包含AudienceEditor控件。我尝试从所有这三个控件继承并标记它们,但它根本不起作用。
只是为了测试我已经映射了TextBox控件,并且在同一页面上工作正常。它也进入Debug。但是AudienceEditor根本就没有用。
答案 0 :(得分:0)
我能想到的只是你看到了这种行为,因为tagMappings are applied at compile time以及将AudienceEditor实例化为子控件的父控件已经被编译到它自己的dll中。
我认为可以胜任的一些替代解决方案。