ASP.NET で PostBack すると TYPE=PASSWORD のコンテンツが初期状態に戻ってしまう

訳が分からないバグ

 <td>
 <asp:DropDownList ID="t_kind" runat="server"
  OnSelectedIndexChanged="t_kind_SelectedIndexChanged" AutoPostBack="True">
  <asp:ListItem Value="0" Selected="True">どーなつ</asp:ListItem>
  <asp:ListItem Value="1">ばなな</asp:ListItem>
  <asp:ListItem Value="2">プリン</asp:ListItem>
  <asp:ListItem Value="3">ヨーグルト</asp:ListItem>
  <asp:ListItem Value="4">みかん</asp:ListItem>
 </asp:DropDownList>
 </td>
 </tr>
 <tr>
 <td style="width: 200px" align="right">
  パスワード:</td>
 <td style="width: 400px">
  <asp:TextBox ID="t_pass" TextMode="Password" runat="server" CssClass="i_box"
  Width="160px">
 </td>
 </tr>

こういうコンテンツがあった時に、パスワードダイアログの中身を書き換えた後、コンボボックスの中身を書き換えて、処理させると、なぜかパスワードが初期値に戻ってしまうという現象が発生。

ちなみに、書き換わってる最中はコード上の割込み処理はなし ・ω・

TextMode="Password" を "SingleLine" に書き換えると、なぜか発生しない。

protected void i_pass_TextChanged(object sender, EventArgs e)
{
            i_pass.Attributes.Add("value", i_pass.Text);
}

対策コード。
ontextchanged で i_pass_TextChanged を呼び出して、 Attribute "Valie"を上書きする。

で解決。謎い ((((・ω・))))

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です