【问题标题】:Add doctype to an aspx page dynamically from ascx.cs从 ascx.cs 动态地将 doctype 添加到 aspx 页面
【发布时间】:2014-10-22 13:32:50
【问题描述】:

是否可以从 ascx 页面的代码隐藏文件中将 <!DOCTYPE HTML> 添加到 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());  
}

但显然它没有帮助。

【问题讨论】:

    标签: c# html asp.net sharepoint web-controls


    【解决方案1】:

    对我来说,它是这样工作的:

    首先,我在页面顶部的第一行,&lt;Form runat="server" 之外添加了一个文字:

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

    然后从代码隐藏:

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

    我认为这不是最好的方法,但它可以正常工作。

    【讨论】:

    • 我运气不好:/ 显然文档类型被注释掉了。我需要在 aspx 站点而不是 ascx 站点上添加文档类型
    • @AirTrickz 然后在您的 aspx 页面上执行此操作。
    • 我无法修改 aspx 页面,因为我们正在动态开发并使用 sharepoint 创建页面定义以包含用户控件
    【解决方案2】:

    由于您使用的是 sharepoint,因此您可以在 WSP 包场解决方案中的代码中创建自定义 web 控件。

    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. 向您的项目添加一个空的共享点元素,然后转到属性窗口并使用属性窗口中的安全控件部分将您的控件注册为安全控件。

    3. 构建/打包 wsp 并将其部署到服务器场。

    然后在共享点设计器中编辑您的母版页,并将您的控件放在应该呈现文档类型的位置。

    将它放在母版页中不会破坏您的网站,因为如果它不在允许的页面上,您可以让您的渲染逻辑不渲染任何东西。

    只需在您的 aspx 页面上有一些代码设置一个 HttpContext.Current.Item... 值,doctype 控件会查找该值以确定它是否应该呈现。只要您的 aspx 页面在调用 Render 之前设置了配置标志,它就会在文档类型控件上触发渲染时出现。

    例如

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-26
      • 2013-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多