2014-10-22 3 views
0

Можно ли добавить <!DOCTYPE HTML> на страницу aspx из кода, стоящего за файлом страницы ascx? Добавление doctype на главную страницу не является вариантом, потому что это разрушит остальные наши сайты sharepoint.Добавить doctype на страницу aspx динамически с ascx.cs

Я попытался переопределить метод визуализации:

protected override void Render(HtmlTextWriter writer) 
{ 
    StringBuilder sb = new StringBuilder("<!DOCTYPE HTML>"); 
    HtmlTextWriter textWriter = new HtmlTextWriter(new System.IO.StringWriter(sb)); 
    //base.Render(writer); 
    base.Render(textWriter); 
    writer.Write(sb.ToString()); 
} 

но, видимо, это не поможет.

ответ

0

Для меня это сработало так:

Сначала я добавил буквальным на верхней части страницы, первая линия, за пределами <Form runat="server":

<asp:Literal runat="server" ID="litHTMLSchema"></asp:Literal> 

Тогда из кода позади:

// HTML 5 
litHTMLSchema.Text = @"<!DOCTYPE html>" + Environment.NewLine + @"<html>"; 

Я не думаю, что это лучший подход, но он работает без каких-либо проблем.

+0

Мне не повезло:/ –

+0

Не повезло мне:/по-видимому, doctype закомментирован. Мне нужно добавить doctype на сайт aspx, а не на сайт ascx –

+0

@AirTrickz, тогда сделайте это на своей странице aspx. – SmartDev

0

Поскольку вы используете sharepoint, вы можете создать собственный webcontrol в коде в решении WSP Package Farm Solution.

  1. Создайте класс DynamicDocTypeControl

    public class DynamicDocTypeControl : System.Web.UI.WebControl *(check namespace for typos) 
    { 
        override Render(...) { 
         //add some conditional logic here for your dynamicness... 
         writer.Write("<!DOCTYPE HTML>"); 
        } 
    } 
    
  2. Добавить пустой элемент Sharepoint в свой проект и перейти к окну свойств и использовать раздел безопасного управления в окне свойств, чтобы зарегистрировать свой контроль как безопасный контроль.

  3. Построить/Пакет wsp и развернуть его на ферму.

Затем отредактируйте свою главную страницу в дизайнере sharepoint и оставьте свой контроль над ней, где должен быть показан doctype.

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

Просто введите код на странице aspx, который устанавливает значение HttpContext.Current.Item ..., которое элемент управления doctype ищет для определения, должен ли он отображаться. Пока ваша страница aspx устанавливает флаг конфигурации перед вызовом Render, она будет там, когда рендер запускается в элементе управления типа doc.

например.

<@ Register TagPrefix="XYZ" Namespace="XYZ.Controls" Assembly="XYZ... (include fully qualified assembly name)" /> 


<XYZ:DynamicDocTypeControl /> 
Смежные вопросы