Мне нужно было добавлять текст в 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
не заменяется.
Источник представления сообщает, что поле Аудитория отображается классом Microsoft.Office.Server.WebControls.FieldTypes.SPFieldTargetTo, который содержит элемент Microsoft.Office.Server.WebControls.FieldTypes.SpFieldTaretToControl, который, в свою очередь, содержит элемент управления Audience. , Я попытался унаследовать от всех этих 3 элементов управления и пометил их тегами, но это просто не работает.
Просто чтобы проверить, я также сопоставил элемент управления TextBox, и он отлично работает на той же странице. Это также входит в Debug. Но AudienceEditor просто не работает.