这是aspx页面的代码:<%@ Page Language="C#" AutoEventWireup="true"  CodeFile="Default.aspx.cs" Inherits="_Default" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <script type="text/javascript">
        function AddComment(){
            var nickname = document.getElementById("nickname").value;
            var comment = document.getElementById("comment").value;
            
            var tableComment = document.getElementById("tableComment");
            var tr = document.createElement("tr");
            
            var tdNickName = document.createElement("td");
            tdNickName.innerText = nickname + ": ";
            tr.appendChild(tdNickName);
            
            var tdComment = document.createElement("td");
            tdComment.innerText = comment;
            tr.appendChild(tdComment);
            
            tableComment.tBodies[0].appendChild(tr);
        }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    无刷新评论!无刷新评论!无刷新评论!无刷新评论!
    无刷新评论!无刷新评论!无刷新评论!无刷新评论!
    <p>评论区:</p>
    <table id="tableComment">
        <tbody>
            <tr><td>毛毛: </td><td>沙发耶!!</td></tr>
        </tbody>
    </table>
    昵称: <input type="text" id="nickname"/><br />
    <textarea id="comment"></textarea><br />
    <input type="button" value="评论" onclick="AddComment()"/>
    <br />
    <asp:Button ID="Button1" runat="server" Text="Button1" 
        onclick="Button1_Click1" />
    </form>
</body>
</html>
这是cs后台代码:    protected void Button1_Click1(object sender, EventArgs e)
    {
        Response.Write("<script>alert('OK!');</script>");
    }
当我新增数条评论后,点击Button1回发给服务器刷新页面后,之前所新增的评论都不见了!
请问应该进行怎样的处理?

解决方案 »

  1.   

    不应该在客户端单纯的操作,这样仅仅是修改了客户端的显示,而服务器端并没有改变,所以AddCommment方法应该对服务器端要操作,将评论结果存储到服务端,比如数据库中,而且在页面加载的时候读取,拼接字符串response.write到客户端
      

  2.   

    asp:button 转换成HTML后,他们都是一个统一的动作submit也就是提交表单,而你客户端生成的table并不是表单认为需要提交的内容所有你一按下button就向服务器重新发起一个HTTP Request,然后服务器向你的客户端返回一个HTTP Response,而这个Response里只有服务器自身生成的内容以及你通过表单提交个服务器的内容,而你客户端提交前的一切客户端行为统统化为乌有。
    想不被刷掉可以把Table的生成在服务器完成,使用Asp的空间进行生成,并且记住每次将内容提交给客户端的时候一定要生成与上一次生成一致的内容。
    还有一个办法是使用AJAX进行局部更新,只更新需要更新的部分,其他页面包括你在客户端生成的Table都不要刷新。