代码之家  ›  专栏  ›  技术社区  ›  Sergej Andrejev

服务器控件内的按钮不呈现onclick=“\uu doPostback”

  •  1
  • Sergej Andrejev  · 技术社区  · 14 年前

    public class FileList : DataBoundControl, INamingContainer
    {
        protected override void CreateChildControls()
        {
            // Add button
            btnAddFile = new System.Web.UI.WebControls.Button();
            btnAddFile.ID = "btnAddFile";
            btnAddFile.Click += btnAddFile_Click;
            btnAddFile.CssClass = "Button";
            btnAddFile.CausesValidation = false;
            Controls.Add(btnAddFile);
        }
    
        void btnAddFile_Click(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }
    }
    
    2 回复  |  直到 14 年前
        1
  •  1
  •   Sergej Andrejev    14 年前

    我自己找到了答案,只是一个偶然的机会。而且很隐蔽。 Button 有一个属性 UseSubmitBehavior true 这意味着默认情况下使用浏览器提交行为。将此值设置为 false

    不过,如果一直是这样的话,我会注意到这一点。所以我在ASCX中创建了一个按钮,值是

        2
  •  0
  •   Shadow Wizard    14 年前

    不应该有任何onclick事件。。。。 <asp:Button> 解析为普通的HTML提交按钮,名称等于按钮ID,值等于按钮文本。

    试着只在不在post back中时创建按钮,希望它能解决您的问题:

    if (!Page.IsPostBack)
    {
            // Add button
            btnAddFile = new System.Web.UI.WebControls.Button();
            btnAddFile.ID = "btnAddFile";
            btnAddFile.Click += btnAddFile_Click;
            btnAddFile.CssClass = "Button";
            btnAddFile.CausesValidation = false;
            Controls.Add(btnAddFile);
    }