我需要使用 LiteralControl 将 ASP:LinkButton 动态添加到网页。首先,我为控件生成一个唯一的 ID,然后按如下方式添加它:
string criteriaDeleteButtonID = "lnkDelete_" + dsCriteria.Tables[0].Rows[intCriteria]["CriteriaID"].ToString();
pnlContent.Controls.Add(new LiteralControl("<asp:LinkButton id=\"" + criteriaDeleteButtonID + "\" OnClick=\"LinkButton_Click\" runat=\"server\" class=\"btn btn-danger\"><i class=\"glyphicon glyphicon-trash\"></i> </asp:LinkButton> </div>"));
在我的代码中,我有以下内容
public void LinkButton_Click(object sender, EventArgs e)
{
LinkButton tmpLinkButton = (LinkButton)sender;
string[] idvars = tmpLinkButton.ID.Split('_');
int criteriaID = Convert.ToInt32(idvars[1].ToString());
clsDataAccess tmpClsData = new clsDataAccess();
bool result = tmpClsData.DeleteCriteria(criteriaID);
buildForm();
}
无论我做什么,我似乎都无法使代码火起来。如果我手动将相同 HTML 添加到表单中,则会触发背后的代码,但如果我使用 LiteralControl 动态添加相同的代码,则事件将不会触发。
我在 Page_Load 中动态生成表单。我在 Page_Int 中尝试过,但没有成功。浏览器控制台报告以下内容: Uncaught ReferenceError: LinkButton_Click 未定义。有什么想法吗?
最佳答案
来自 MSDN:https://msdn.microsoft.com/es-es/library/system.web.ui.literalcontrol(v=vs.110).aspx
LiteralControl(类)
表示 ASP.NET 页面中不需要需要在服务器上处理的 HTML 元素、文本和任何其他字符串。
背后的代码显然需要在服务器端进行处理。
关于javascript - ASP :LinkButton created via literal control will not fire code behind,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34267913/