asp.net ajax不会在异步回发中保留textarea值

时间:2012-05-28 10:02:12

标签: asp.net ajax updatepanel scriptmanager

我有一个带有textearea,两个列表框和一个按钮的对话框弹出窗口。通过在第一个列表框中选择一个值并按下“>”按钮选定的值将传递到第二个列表框。这是通过asp.net ajax完成的。

<td>
    <div align="center">
           <textarea style="height:50px; overflow:hidden;";rows="20"
              cols="40"
              id="editor1" 
              class="tinymce">
           </textarea>
    </div>
</td>

我把2个列表框和按钮放在asp.net uploadpanel之间。像这样:

<td>
                        <asp:UpdatePanel runat="server" id="updatePanel1">
                            <ContentTemplate>
                            <table width="100%" align="left">
                                            <tr>
                                                <td colspan="5">
                                                    <hr align="left" style="width:95%" />
                                                </td>
                                            </tr>
                                            <tr>
                                                <td valign="top">
                                                    <cc1:SWCListBox
                                                        ID="SWCListBox1" 
                                                            runat="server" 
                                                            Width="100"
                                                            SelectionMode="Single" 
                                                            CssClass="VW1">

                                                        </cc1:SWCListBox>
                                                </td>
                                                <td 
                                                    valign="top" 
                                                    width="50" 
                                                    align="center">
                                                    <cc1:SWCButton
                                                        Text=" > " 
                                                        ID="SWCBtnAddValue" 
                                                        CssClass="VW1 VWButton" 
                                                        runat="server" 
                                                        ToolTip="Add to list"
                                                        OnClick="AddValue_Click"
                                                        CausesValidation="false"
                                                        />

                                                <td valign="top">
                                                            <cc1:SWCListBox
                                                                id="SWCListBox2"
                                                                CssClass="VW1" 
                                                                runat="server" 
                                                                Width="100" 
                                                                SelectionMode="Single"
                                                        />

                                                </td>
                                                </tr>
                                        </table>
                                      </ContentTemplate>
                                    </asp:UpdatePanel>

问题在于,当我在textarea中键入内容并进行异步回发时,文本键入会消失。

如何将textarea值保留在异步回发中? 谢谢。

1 个答案:

答案 0 :(得分:1)

此问题是因为您使用UpdatePanel,而textarea不是asp.net控件。你有两个解决方案。

1)通过放置run =“server”(或)来使其成为asp.net控件 2)将后置值手动放置为:

<div align="center">
       <textarea style="height:50px; overflow:hidden;";rows="20"
          cols="40"
          id="editor1" 
          name="editor_1"
          class="tinymce">
       <asp:Literal runat="server" id="txtEditor1" />
       </textarea>
</div>

以及

背后的代码
txtEditor1.Text = Server.HtmlEncode(Request.Form["editor_1"].ToString());

(因为你使用UpdatePanel,重要的是使用Literal来添加这个值而不使用<%=%>,否则会抛出错误。