В настоящее время мы делаем это как можно позже на странице, чтобы убедиться, что мы можем быть уверены, особенно для тега заголовка, что мы можем заменить или добавить заголовок, если это будет необходимо.
protected override void OnPreRender(EventArgs e)
{
var cmsPage = this.Page as CmsPageBase;
if (cmsPage != null)
{
cmsPage.Title = "My Title";
cmsPage.Header.Controls.Add(new LiteralControl("<meta name=\"keywords\" content=\"my key words" /><meta name=\"description\" content=\"My description\" />"));
}
base.OnPreRender(e);
}
Единственная проблема с этим подходом состоит в том, что если кто-то заполняет любое описание или ключевые слова в бэкэнде Sitefinity, то это добавит оба. Однако вышеупомянутое можно расширить, чтобы проверить коллекцию Header.Controls для этих тегов и удалить / заменить их.