[英]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.