TagMapping элемент управления AudienceEditor не работает - PullRequest
0 голосов
/ 21 ноября 2011

Мне нужно было добавлять текст в 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 просто не работает.

1 Ответ

0 голосов
/ 22 ноября 2011

Все, что я могу думать, это то, что вы видите это поведение, потому что теги применяются во время компиляции , а родительский элемент управления, который создает экземпляр AudienceEditor в качестве дочернего элемента управления, уже скомпилирован в его собственную dll.

Некоторые альтернативные решения, которые, я думаю, сработают.

  • используйте css для отображения изображения с вашим текстом в качестве фонового изображения, расположенного там, где вы хотите.
  • использовать JavaScript для вставки текста, когда документ загружен в браузер
  • использовать адаптеры управления для управления рендерингом элемента управления Audience Editor (не очень легко развернуть, когда мы говорим о SharePoint)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...