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"を上書きする。
で解決。謎い ((((・ω・))))
Comments