ASP.NET C#从控件中清除空值

时间:2012-06-28 19:14:29

标签: c# asp.net forms controls .net

我有一个包含各种输入的表单,其中一些使用'title'属性将提示文本放入输入中。提交表单后,将发送一封包含每个输入值的电子邮件。但是,如果该字段尚未填写,则会使用标题作为值。我可以检查一个空字段并手动删除值,如下所示:

if (a_eventSelect.Attributes["title"] == a_eventSelect.Value)
     {
          a_eventSelect.Value = "";
     }

问题在于,如果表单有许多输入,则检查每个表单可能会变得不必要地繁琐。我开始创建一个函数来检查每个控件并清除它是否为空。

protected void Page_Load(object sender, EventArgs e)
{
     //initialize
     base.Initialize();

     //on reload of page
     if (IsPostBack)
     {
          //clear blank values
          clear(mainform);

          //send email
          SendEmail();

          //display thank you
          thankyou.Visible = true;

          //hide main
          main.Visible = false;
      }
}

public void clear(Control location)
{
     //for each control in location
     foreach (Control c in location.Controls)
     {
          //if the control has child controls
          if (c.HasControls())
          {
               //call function with new location
               clear(c);
          }
          //some code to check value and title
     }
}

我似乎无法弄清楚的是如何接受每个控件并实际比较它的标题和值,甚至在函数中更改其值。有没有人对可能有用的东西有任何想法?提前谢谢。

2 个答案:

答案 0 :(得分:1)

迭代主窗体控件,转换为“root”类(我认为Control会这样做)然后检查它们

答案 1 :(得分:0)

答案基于我注意到的两点

  1. 您想要清除所有输入控件
  2. 代码行(a_eventSelect.Attributes [“title”] == a_eventSelect.Value)表示您在webform中使用HtmlInputControl
  3. 将值设置为空的示例

        private void SetControlValueToEmpty()
        {
            IEnumerable<HtmlInputControl> htmlInputControls = form1.Controls.OfType<System.Web.UI.HtmlControls.HtmlInputControl>();
            foreach (var htmlInputControl in htmlInputControls)
            {
                if (htmlInputControl.Attributes["title"] == htmlInputControl.Value)
                {
                    htmlInputControl.Value = "";
                }
            }
        }