【问题标题】:asp:LinkButton created via literal control will not fire code behindasp:LinkBut​​ton 通过文字控制创建不会触发后面的代码
【发布时间】:2015-12-14 13:09:29
【问题描述】:

我需要使用 LiteralControl 将 ASP:LinkBut​​ton 动态添加到网页。首先我为控件生成一个唯一的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();

}

无论我做什么,我似乎都无法让背后的代码着火。如果我手动将 same HTML 添加到表单后面的代码会触发,但如果我使用 LiteralControl 动态添加相同的代码,则不会触发事件。

我在 Page_Load 中动态生成表单。我在 Page_Int 中尝试过,但没有运气。浏览器控制台报告以下内容: Uncaught ReferenceError: LinkBut​​ton_Click is not defined。有什么想法吗?

【问题讨论】:

  • 服务器端控件作为文本控件没有任何意义。你真正的需求是什么?向页面动态添加链接按钮?
  • 感谢 Diginari 和 Andrei。是的,真正的要求是向页面动态添加链接按钮。该页面非常复杂,我正在使用字符串构建器构建 html,并在最后通过文字将字符串构建器写入页面。我希望不必向页面添加普通控件,因为我将无法使用字符串生成器。我可能对这个不走运......
  • @Rusty007,是的,你不走运。对于服务器端控件,它们需要通过普通的 Controls.Add 方法添加到控件树中。如果您将 Literal 与一些文本一起使用,那么您真正需要的控件只是 ASP.NET 中的一段文本,严格来说并不存在。

标签: javascript c# asp.net


【解决方案1】:

来自 MSDN:https://msdn.microsoft.com/es-es/library/system.web.ui.literalcontrol(v=vs.110).aspx

LiteralControl(类)

表示 ASP.NET 页面中不需要需要在服务器上处理的 HTML 元素、文本和任何其他字符串。

后面的代码显然需要在服务器端处理。

【讨论】:

  • 非常感谢您的帮助@Andrei; @杰里
猜你喜欢
  • 2011-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-15
  • 1970-01-01
  • 1970-01-01
  • 2013-09-25
  • 1970-01-01
相关资源
最近更新 更多