ASP.NET 如何使用 foreach 循环访问多个表单标签文本属性

本文关键字:表单 标签 文本 属性 访问 NET 何使用 foreach 循环 ASP | 更新日期: 2023-09-27 18:36:49

我有一个表单runat="server",id = "myform"。这是一个带有大量标签的个人资料页面。我正在从SQL数据库获取他们的输入文本。但是,如果SQL数据库具有空值,那么我希望他们的文本更改为"未指定"。出于这样的原因,我使用以下代码,但它不起作用。

foreach (Control item in myform.Controls)
{
    Label lbl = null;
    bool labelIsEmpty = false;
    try
    {
        lbl = (Label)item;
        labelIsEmpty = (lbl.Text == string.Empty && lbl != null);
    }
    catch 
    {
    }
    if (labelIsEmpty)
    {
        lbl.Text = "Not Specified";
    }
}

ASP.NET 如何使用 foreach 循环访问多个表单标签文本属性

myform.Controls将为您提供一个集合,其中包含容器中的所有控件(不仅是标签)。因此,您必须在迭代集合时检查控件的类型,以避免引发异常。在附加注释中,您需要指定该label has default text "Label"因此您还需要将其包含在条件中。整个方案可以像下面这样实现:

      foreach (Control  item in myform.Controls)
        {
            if (item is Label)
            {
              var  lbl = (Label)item;
              bool labelIsEmpty = false;
              try
              {
                  lbl = (Label)item;
                  labelIsEmpty = (lbl != null && lbl.Text == string.Empty && lbll.Text!="Label");
              }
              catch 
              { 
              //Throw error message
              }
              if (labelIsEmpty)
              {
                  lbl.Text = "Not Specified";
              }
            }
        }

注意:-

您需要对条件重新排序以避免异常。检查 string.Empty应该在检查控制null后出现。 因为如果第一个条件是AND则不会检查第二个条件 false,如果lbl为空,lbl.Text将抛出NullReferenceException

foreach (Control item in myform.Controls)
        {
            if (item is Label)
            {
                var lbl = (Label)item;
                bool labelIsEmpty = false;
                try
                {
                    lbl = (Label)item;
                    labelIsEmpty = (lbl != null && (lbl.Text == string.Empty || lbl.Text == "Label"));
                }
                catch
                {
                    //Throw error message
                }
                if (labelIsEmpty)
                {
                    lbl.Text = "Not Specified";
                }
            }
        }