我有一个包含各种输入的表单,其中一些使用'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
}
}
我似乎无法弄清楚的是如何接受每个控件并实际比较它的标题和值,甚至在函数中更改其值。有没有人对可能有用的东西有任何想法?提前谢谢。
答案 0 :(得分:1)
迭代主窗体控件,转换为“root”类(我认为Control会这样做)然后检查它们
答案 1 :(得分:0)
答案基于我注意到的两点
将值设置为空的示例
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 = "";
}
}
}