1

asp:TextBoxwithがTextMode = "Password"あり、入力する必要があるときに正常に機能します。私のテキストボックス:

<asp:TextBox ID="Txt_NovaSenha" runat="server"  TextMode="Password" Width="170px"></asp:TextBox>

しかし、次のように、データベースからパスワードを取得して TextBox.Text に割り当てる必要があります。

DataSet ds = forza.BuscaDadosCadastrais(Session["login"].ToString());

   foreach (DataRow row in ds.Tables[0].Rows)
     {
        TxtNome.Text = row["nome"].ToString();
        TxtEmail.Text = row["email"].ToString();
        TxtLogin.Text = row["login"].ToString();
        string aux = crip.DescriptografaString(row["senha"].ToString());
        Txt_SenhaAtual.Text = aux;
        Txt_SenhaAtual.TextMode = TextBoxMode.Password;
     }   

しかし、それがあるときTextMode = Password。テキストボックスが空になります。
そして、この部分を削除すると、正常に動作します...
回避する方法はありますか?

4

4 に答える 4

1

次のように、プログラムで textMode を変更する必要があります。

Me.Txt_NovaSenha.TextMode = TextBoxMode.SingleLine
Me.Txt_NovaSenha.Text = "test"

しかしもちろん、これはパスワード モードの目的に反します。セキュリティの観点から、パスワードはハッシュ化して復元できないようにする必要があります。使用している電子メール サイトがどのように機能するかを考えてみてください。パスワードを忘れた場合、彼らはあなたにそれを与えず、リセットさせます。これは、パスワードがハッシュ化されており、ハッシュ化を解除できない (すべきではない) ためです。

透かしだけを探している場合は、ajaxcontrol ツールキットを使用できます。

 <ajax:TextBoxWatermarkExtender ID="TextBoxWatermarkExtender1" runat="server" TargetControlID="Txt_NovaSenha" WatermarkText="****">
    </ajax:TextBoxWatermarkExtender>
<asp:TextBox ID="Txt_NovaSenha" runat="server"  TextMode="Password" Width="170px"></asp:TextBox>

ツールキット dll ( http://ajaxcontroltoolkit.codeplex.com/ )をダウンロードして含めるようにしてください。

于 2013-03-05T17:47:06.573 に答える
1

シチュエーションによっては…

// don't use an asp textbox
<input type="password" value="<asp:Literal id="passwordText" runat="server" />" />

または、より複雑な解決策として、入力要素を探して送信 html を解析し、空の文字列を実際のパスワードに置き換えます。

于 2013-03-05T17:47:44.547 に答える