从ASP.NET表单中删除提交按钮

时间:2014-03-15 21:34:44

标签: c# asp.net html-form

我在一堆容器中尝试了...Controls.Remove(ButtonToRemove),包括PageNamingContainerContent内容占位符控件。我还尝试将按钮Visible属性设置为false,禁用Button控件,并将Text设置为空字符串。

尝试了所有这些内容并看到调试器运行在上面描述的尝试代码行上,并且仍然看到页面上有问题的按钮时,我不知道是否存在浏览器规则无论如何,提交按钮必须是可见的。我怀疑,特别是因为使用上述方法正确删除了一堆类似删除的TextBox和Label控件。

这是我从Page_Load代码调用的方法,对象被定义为正常:

public void RemoveInputControls()
{
    LabelD.Text = string.Empty;
    LabelF.Text = string.Empty;
    LabelS.Text = string.Empty;
    TextBoxK.Visible = false;
    TextBoxK.ReadOnly = true;
    TextBoxK.Page.Controls.Remove(TextBoxK);
    TextBoxK.NamingContainer.Controls.Remove(TextBoxK);
    TextBoxK.Enabled = false;
    Content2.Controls.Remove(Content2.FindControl(TextBoxK.ID));
    Page.Controls.Remove(TextBoxK);

    ButtonSubmit.UseSubmitBehavior = false;
    ButtonSubmit.Text = string.Empty;
    ButtonSubmit.Visible = false;
    ButtonSubmit.Page.Controls.Remove(ButtonSubmit);
    ButtonSubmit.NamingContainer.Controls.Remove(ButtonSubmit);
    ButtonSubmit.Enabled = false;
    Content2.Controls.Remove(Content2.FindControl(ButtonSubmit.ID));
    Page.Controls.Remove(ButtonSubmit);
}

(抱歉,我不知道如何更好地为stackoverflow格式化asp.net标记),这里是页面代码,你可以看到它是母版页的子页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeBehind="Index.aspx.cs" Inherits="Index" %>

<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
    <div class="normal">
        <br />
        <h2><asp:Label ID="LabelD" runat="server" Text="Greetings!" CssClass="cssclass"></asp:Label>h2>
        <h4 class="cssh4"><asp:Label ID="LabelF" runat="server" Text="enter input:"></asp:Label></h4>
        <asp:TextBox ID="TextBoxK" runat="server" Width="200px"></asp:TextBox>
        <h4 class="cssh4"><asp:Label ID="LabelS" runat="server" Text="click:"></asp:Label></h4>
        <asp:Button ID="ButtonSubmit" runat="server" Text="Submit Input" Visible="true"/>
    </div>
</asp:Content>

2 个答案:

答案 0 :(得分:0)

尝试将删除代码移至 PreInit 事件。

在发生ViewState加载之前(在 InitComplete 事件或之前的任何其他事件中),必须删除所有应删除的声明性控件(在ASPX文件中定义)

检查:ASP.NET issue when removing Control on Page Load

enter image description here

答案 1 :(得分:0)

'thepirat000的回答非常明显;最终我的解决方案是根据页面渲染周期事件中设置的标志从aspx标记中省略有问题的控件。

仍然不清楚ObjectInstance.Controls.Remove()方法的用途和位置,可能更多不同的平台而不是ASP.NET