2014-10-22 3 views
0

<!DOCTYPE HTML>을 ascx 페이지의 코드 숨김 파일에서 aspx 페이지에 추가 할 수 있습니까? 마스터 페이지에 doctype을 추가하는 것은 나머지 셰어 포인트 사이트를 망칠 것이므로 옵션이 아닙니다.ascx.cs에서 동적으로 aspx 페이지에 doctype 추가

나는 렌더링 방법을 재정의하는 시도했다 :

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()); 
} 

을하지만, 분명히 도움이되지 않습니다. 코드 숨김에서 다음

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

: 다음 <Form runat="server" 외부

우선 페이지, 첫 번째 줄의 상단에 문자를 추가 : 나를 위해

답변

0

은 이런 식으로 일을

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

이것이 최선의 방법이라고 생각하지 않지만 문제없이 작동합니다.

+0

나를위한 행운을 보지 마십시오 :/ –

+0

나에게 운이 없다 : 분명히 doctype이 주석 처리되고 있습니다. doxype을 ascx 사이트가 아닌 asx 사이트에 추가해야합니다. –

+0

@AirTrickz 그러면 aspx 페이지에서이 작업을 수행하십시오. – SmartDev

0

SharePoint를 사용하고 있으므로 WSP 패키지 팜 솔루션의 코드에 사용자 지정 웹 컨트롤을 만들 수 있습니다.

  1. 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. 프로젝트에 빈 셰어 요소를 추가하고 속성 창으로 이동하고 같은 컨트롤을 등록하려면 속성 창에서 안전 제어 섹션을 사용 DynamicDocTypeControl

    라는 클래스를 생성 안전한 제어.

  3. wsp를 빌드/패키지하고 팜에 배포합니다.

그런 다음 셰어 포인트 디자이너에서 마스터 페이지를 편집하고 doctype을 렌더링해야하는 컨트롤을 놓습니다.

허용되지 않은 페이지에 렌더링 논리가 렌더링되지 않도록 할 수 있으므로 마스터 페이지에두면 사이트가 파손되지 않습니다.

doctype 컨트롤이 렌더링해야하는지 결정하기 위해 찾는 HttpContext.Current.Item ... 값을 설정하는 aspx 페이지에 코드가 있습니다. Render가 호출되기 전에 aspx 페이지가 config 플래그를 설정하는 한, doc 유형 컨트롤에서 렌더링이 실행될 때 aspx 페이지가 표시됩니다.

예컨대

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


<XYZ:DynamicDocTypeControl /> 
관련 문제