在 div 的 innerHtml 中插入 asp 标签
Posted
技术标签:
【中文标题】在 div 的 innerHtml 中插入 asp 标签【英文标题】:insert asp tags in innerHtml in a div 【发布时间】:2014-06-04 15:28:54 【问题描述】:我正在尝试做这种事情:
aspx
<div runat="server" id="divAltriIndirizzi">
</div>
Page_Load 方法中的aspx.cs
StringBuilder sbDivIndirizzi = new StringBuilder();
for (int i = 0; i < dtInd.Rows.Count; i++)
sbDivIndirizzi.Append("<div class='row'> ");
sbDivIndirizzi.Append("<div class='col-lg-12'>");
sbDivIndirizzi.Append("<h3>Indirizzo "+ (i+1).ToString() +"</h3>");
sbDivIndirizzi.Append("<div class='form-group'>");
sbDivIndirizzi.Append("<div class='row'>");
sbDivIndirizzi.Append("<div class='col-lg-8' ID='DivIndirizzo'+(i+1).ToString()>");
sbDivIndirizzi.Append("Indirizzo:");
sbDivIndirizzi.Append("<asp:TextBox runat='server' ID='txtIndirizzo' CssClass='form-control'/>");
sbDivIndirizzi.Append("</div>");
sbDivIndirizzi.Append("</div>");
sbDivIndirizzi.Append("</div>");
sbDivIndirizzi.Append("</div>");
sbDivIndirizzi.Append("</div>");
divAltriIndirizzi.Innerhtml= sbDivIndirizzi.ToString();
错误是,在文件 BrowserLink 中:
Eccezione non gestita alla riga 37, colonna 59140 in http://localhost:52479/46dd86a4956a46e08caee509120ba667/browserLink
0x800a139e - Errore di run-time di javascript: Syntax error, unrecognized expression: unsupported pseudo: TextBox
我做错了什么?我是 Aspx.net 的新手……复活节快乐!
这是我正在尝试做的,但 Control c 始终为空:
for (int i = 0; i < dtInd.Rows.Count; i++)
sbDivIndirizzi = new StringBuilder();
sbDivIndirizzi.Append("<h3>Indirizzo "+ (i+1).ToString() +"</h3>");
sbDivIndirizzi.Append("<div class='form-group'");
sbDivIndirizzi.Append("<div class='row'>");
sbDivIndirizzi.Append("<div class='col-lg-8' ID = 'DivIndirizzo"+ (i+1).ToString()+"'>");
sbDivIndirizzi.Append("Indirizzo:");
sbDivIndirizzi.Append("</div>");
sbDivIndirizzi.Append("</div>");
sbDivIndirizzi.Append("</div>");
divAltriIndirizzi.InnerHtml = sbDivIndirizzi.ToString();
Control c = null;
c=Page.FindControl("DivIndirizzo" + (i + 1).ToString());
if (c != null)
c.Controls.Add(
new TextBox()
ID = "txtIndirizzo" + (i + 1).ToString(),
CssClass = "form-control",
Text = dtInd.Rows[i]["Indirizzo"].ToString()
);
【问题讨论】:
【参考方案1】:您不能将asp
控件添加为文字字符串。您必须像这样添加服务器端控件:
divAltriIndirizzi.Controls.Add(
new TextBox ()
ID = "txtIndirizzo",
CssClass= "form-control"
);
更新:
一种方法是,您可以像这样创建DivIndirizzo
:
System.Web.UI.HtmlControls.HtmlGenericControl subDiv = new System.Web.UI.HtmlControls.HtmlGenericControl("DIV");
subDiv.ID = "DivIndirizzo"+ (i+1);
subDiv.Attributes["class"]= "col-lg-8";
subDiv.Controls.Add(
new TextBox ()
ID = "txtIndirizzo",
CssClass= "form-control"
);
divAltriIndirizzi.Controls.Add(subDiv);
【讨论】:
是的,但是如果我必须在上面动态创建的 Div 中添加 TextBox?例如在 div 我该怎么办?我尝试为 div 和 Page.FindControl(ID) 提供一个 ID,但它始终为空(我编辑问题) 【参考方案2】:错误可能是这一行sbDivIndirizzi.Append("<asp:TextBox runat='server' ID='txtIndirizzo' CssClass='form-control'/>");
试试这个:sbDivIndirizzi.Append("<asp:TextBox runat=\"server\" ID=\"txtIndirizzo\" CssClass=\"form-control\"/>");
【讨论】:
以上是关于在 div 的 innerHtml 中插入 asp 标签的主要内容,如果未能解决你的问题,请参考以下文章
如何在asp.net控件InnerHtml c#中的div标签中使用类
从 InnerHTML 中的代码隐藏向页面添加 ASP 控件