![](/img/trans.png)
[英]how to get HiddenField Value from ascx.cs page to aspx.cs page
[英]Add doctype to an aspx page dynamically from ascx.cs
是否可以从ascx页面文件背后的代码中将<!DOCTYPE HTML>
添加到aspx页面? 不能将文档类型添加到母版页,因为它会破坏其余的共享点站点。
我试图重写render方法:
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());
}
但显然没有帮助。
对我来说,它是这样工作的:
首先,我在页面上方第一行的<Form runat="server"
之外添加了一个文字:
<asp:Literal runat="server" ID="litHTMLSchema"></asp:Literal>
然后从代码背后:
// HTML 5
litHTMLSchema.Text = @"<!DOCTYPE html>" + Environment.NewLine + @"<html>";
我认为这不是最好的方法,但是它没有任何问题。
由于使用的是共享点,因此可以在WSP Package Farm解决方案中的代码中创建自定义Web控件。
创建一个名为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>"); } }
在项目中添加一个空的sharepoint元素,然后转到属性窗口,然后使用属性窗口中的“安全控件”部分将控件注册为安全控件。
构建/打包wsp并将其部署到服务器场。
然后在sharepoint设计器中编辑您的母版页,并将您的控件放在应该呈现doctype的位置。
将其放入母版页不会破坏您的网站,因为如果不在允许的页面上,则可以使呈现逻辑不呈现任何内容。
只要在您的aspx页面上有一些代码即可设置HttpContext.Current.Item ...值,doctype控件将查找该值以确定是否应呈现。 只要您的aspx页面在调用Render之前设置了config标志,当在doc type控件上触发render时,它将存在。
例如
<@ Register TagPrefix="XYZ" Namespace="XYZ.Controls" Assembly="XYZ... (include fully qualified assembly name)" />
<XYZ:DynamicDocTypeControl />
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.