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";
}
}
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";
}
}
}