C# 密码字段在回发修复时返回空,但需要在按钮单击时清除该字段

Posted

技术标签:

【中文标题】C# 密码字段在回发修复时返回空,但需要在按钮单击时清除该字段【英文标题】:C# password field returns empty on postback fixed but need to clear the field on button click 【发布时间】:2021-12-23 07:06:10 【问题描述】:

我的网络表单中有密码和确认密码,回发时返回空(我已经级联 DDL。只有在第一个 ddl 中选择了任何值并且两者都是必填字段时,才会启用第二个 ddl。我已经设置了自动回发1st 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;
    

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

【问题讨论】:

【参考方案1】:

为什么我认为你让你的生活变得艰难? 在代码隐藏中,您可以通过其 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 中控制 ctrl 我认为是因为控件像 DOM 树一样保持层次结构。 (对不起我的英文简而言之,你的文本框可能保存在 ctrl .Controls[1].Controls[x]....Controls[y] )

【讨论】:

感谢您花时间回答我的问题。 txtPassword.Attributes.Remove("值"); txtConfirmPassword.Attributes.Remove("值");。这对我有用。现在可以在单击按钮时清除文本框。

以上是关于C# 密码字段在回发修复时返回空,但需要在按钮单击时清除该字段的主要内容,如果未能解决你的问题,请参考以下文章

防止在回发时重新加载 iframe

在回发期间启用/禁用 Asp.net Image 按钮

Gridview 中 TemplateField 中的复选框在回发时丢失

在回发时保持页面内 div 的滚动位置

DropDownList 中的 ListItems 属性在回发时丢失?

asp .net背景图像在回发时闪烁