[英]How to Generate Server-Side tags dynamiclly
我有一個ASP.net頁面,其中包含一些控件。
我通過代碼生成此控件,[實際上,我有一個使用stringBuilder並將Serverside標記添加為扁平字符串的方法]
我的頁面正確顯示了內容,但不幸的是,我的控件變得像客戶端控件
例如,我在生成的代碼上有一個LoginView不能正常工作,並且我還從LocalResources中讀取了一些字符串,該字符串沒有出現在頁面上
我應該怎么做才能使我的生成方法正確
這是代碼
protected string CreateSubSystem(string id, string roles, string AnonymousTemplateClass, string href, string rolesContentTemplateClass, string LoggedInTemplateClass)
{
StringBuilder sb = new StringBuilder();
sb.Append("<div class=\"SubSystemIconPlacement\" id=\"");
sb.Append(id);
sb.Append("\"><asp:LoginView runat=\"server\" ID=\"");
sb.Append(id);
sb.Append("\"><AnonymousTemplate><div class=\"");
sb.Append(AnonymousTemplateClass);
sb.Append("\"></div><asp:Label ID=\"lblDisabled");
sb.Append(id);
sb.Append("\" runat=\"server\" SkinID=\"OneColLabel\" meta:resourcekey=\"lbl");
sb.Append(id);
sb.Append("\" /></AnonymousTemplate><RoleGroups><asp:RoleGroup Roles=\"");
sb.Append(roles);
sb.Append("\"><ContentTemplate><a class=\"ImageLink\" href=\"");
sb.Append(href);
sb.Append("\"><div class=\"");
sb.Append(rolesContentTemplateClass);
sb.Append("\"></div></a><asp:HyperLink runat=\"server\" CssClass=\"SubSystemText\" ID=\"lnk");
sb.Append(id);
sb.Append(" NavigateUrl=\"~/");
sb.Append(href);
sb.Append(" \" meta:resourcekey=\"lbl");
sb.Append(id);
sb.Append("\" /></ContentTemplate></asp:RoleGroup></RoleGroups><LoggedInTemplate><div class=\"");
sb.Append(LoggedInTemplateClass);
sb.Append("\"></div><asp:Label runat=\"server\" SkinID=\"OneColLabel\" ID=\"lblDisabledLoggedIn");
sb.Append(id);
sb.Append("\" meta:resourcekey=\"lbl");
sb.Append(id);
sb.Append("\" /></LoggedInTemplate></asp:LoginView>");
sb.Append("</div>");
return sb.ToString();
}
我也在page_PreRender事件上使用此方法
您需要實例化服務器端控件,然后將它們附加到父節點。 您不能在客戶端上轉儲標記以獲取服務器端控制。
asp.net引擎消耗服務器控件,然后為您呈現正確的客戶端標記。 因此,一旦在客戶端即可從服務器端釋放
Dim t As TextBox
t = New TextBox
PlaceHolder1.Controls.Add(t)
試試這個簡單的例子 。 希望有幫助:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.