0

我的网络表单中有密码和确认密码,它们在回发时返回空(我已经级联 DDL。只有在第一个 ddl 中选择了任何值并且两者都是必填字段时,才会启用第二个 ddl。我已经设置了第一个的自动回发属性ddl 为 true,因此每次回帖时,密码都返回空)。为了解决这个问题,我使用了以下代码

if (IsPostBack)
{
    if (!String.IsNullOrEmpty(txtPassword.Text.Trim()))
    {
        txtPassword.Attributes["value"] = txtPassword.Text;
    }
    if (!String.IsNullOrEmpty(txtConfirmPassword.Text.Trim()))
    {
        txtConfirmPassword.Attributes["value"] = txtConfirmPassword.Text;
    }
}

现在点击提交按钮,我想清除所有文本框和 ddl 值。但上面并没有让我清除密码并确认密码字段。清除字段的代码

foreach (Control ctrl in form1.Controls)
{
    if (ctrl.GetType() == typeof(TextBox))
    {
        ((TextBox)(ctrl)).Text = string.Empty;
    }
    else if (ctrl.GetType() == typeof(DropDownList))
    {
        ((DropDownList)(ctrl)).SelectedIndex = 0;
    }
}

请帮我解决问题。任何帮助表示赞赏。

4

1 回答 1

0

为什么我认为你让你的生活变得艰难?在代码隐藏中,您可以通过其 ID 调用控件,所以为什么不像这样清除它们

在代码隐藏中确认逻辑

string pwd =txtPassword.Text ;
string confirm_pwd = txtConfirmPassword.Text ;

if(  pwd != confirm_pwd){ 
  // do some alert ?
}else{
 // do the submit logic then clear 
txtPassword.Text = "";
txtConfirmPassword.Text = "";
IDofDropdown.SelectedIndex = 0;
}

还有..在form1.Controls中的Control ctrl中找不到文本框和下拉菜单是有原因的,我认为是因为控件像DOM树一样保持层次结构。(对不起我的英语,你的文本框可能保存在 ctrl .Controls[1].Controls[x]....Controls[y] )

于 2021-12-23T08:35:42.837 回答