做了个留言本,
其中有一个guest_write.aspx页面。加入了三个ascx用户控件(分别是top.ascx,add_word.ascx,bottom.ascx),其中add_word.ascx是添加留言的部分,先贴上源码Guest_write.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Guest_Write.aspx.cs" Inherits="Guest_Write" %>
<%@ Register Src="Control/top.ascx" TagName="top" TagPrefix="uc1" %>
<%@ Register Src="Control/AddWord.ascx" TagName="AddWord" TagPrefix="uc2" %>
<%@ Register Src="Control/buttom.ascx" TagName="buttom" TagPrefix="uc3" %>
<head runat="server">
    <title>签写新的留言</title>
    <link href="Style/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
    <form id="form1" runat="server">
        <uc1:top ID="Top1" runat="server" />
        <uc2:AddWord ID="AddWord1" runat="server" />
        <uc3:buttom ID="Buttom1" runat="server" />
    </form>
</body>
</html>关键部分:add_wrod.ascx
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="AddWord.ascx.cs" Inherits="Control_AddWord" EnableViewState="false"%>
 <script language="JavaScript" type="text/javascript">
function changeimage()

//document.form1.selectimg.value=document.form1.seleimage.value;
document.form1.showimage.src=document.form1.AddWord1_seleimage.value;
}
</script>
<center>
<table border="0" cellpadding="0" cellspacing="0" style="background-color:#FFFFFF">
    <tr>
        <td style="background-image: url(/Images/light_left.gif); width: 15px"></td>
        <td align="center" style="width: 745px; height: 17px"><table border="1" cellpadding="4" cellspacing="0" bordercolor="#3873B3" class="tablestyle">
          <tr>
            <td colspan="3" align="center" style="background-image:url(/Images/bg_title.gif); height:20px">发 表 留 言 </td>
          </tr>
          <tr>
            <td align="left" style="width:10%">姓名:</td>
            <td align="left" style="width:40%">
                <asp:TextBox ID="txtGuestName" runat="server" EnableViewState="False"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ControlToValidate="txtGuestName"
                    Display="Dynamic" ErrorMessage="*" EnableViewState="False"></asp:RequiredFieldValidator></td>
            <td rowspan="5"><select id="seleimage" name="changeimg" onchange="changeimage();" runat="server" enableviewstate="false" >
                    <option selected="selected" value="images\man\01.gif">01</option>
                    <option value="images\man\02.gif">02</option>
                    <option value="images\man\03.gif">03</option>
                    ......
                <option value="images\man\20.gif">20</option>
                </select>
                &nbsp;
                <img src="../Images/man/01.gif" id="showimage" alt=""/></td>
          </tr>
          <tr align="left">
            <td>邮箱:</td>
            <td>
                <asp:TextBox ID="txtGuestEmail" runat="server" EnableViewState="False"></asp:TextBox>&nbsp;
                <asp:RegularExpressionValidator ID="rvGuestname" runat="server" ControlToValidate="txtGuestEmail"
                    Display="Dynamic" ErrorMessage="*" ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" EnableViewState="False"></asp:RegularExpressionValidator></td>
          </tr>
          <tr align="left">
            <td>QQ号:</td>
            <td>
                <asp:TextBox ID="txtGuestQq" runat="server" EnableViewState="False"></asp:TextBox></td>
          </tr>
          <tr align="left">
            <td>留言主题:</td>
            <td>
                <asp:TextBox ID="txtGuestTitle" runat="server" EnableViewState="False"></asp:TextBox>
                <asp:RequiredFieldValidator ID="RequiredFieldValidator2" runat="server" ControlToValidate="txtGuestTitle"
                    Display="Dynamic" ErrorMessage="*" EnableViewState="False"></asp:RequiredFieldValidator></td>
          </tr>
          <tr align="left">
            <td>验证码:</td>
            <td>
                <asp:TextBox ID="TextBox1" runat="server" EnableViewState="False"></asp:TextBox></td>
          </tr>
          <tr>
            <td align="left">留言内容:</td>
            <td colspan="2" align="left" valign="middle">
                <asp:TextBox ID="txtGuestContent" runat="server" Rows="4" TextMode="MultiLine" EnableViewState="False"></asp:TextBox>
                <img alt="粗体" src="../Images/ubb_bold.gif"  style=" cursor:pointer"/>
                <img alt="斜体" src="../Images/ubb_italicize.gif" style="cursor:pointer"/>
                <img alt="下划线" src="../Images/ubb_underline.gif" style="cursor:pointer"/>
                <img alt="超链接" src="../Images/ubb_url.gif" style="cursor:pointer" /></td>
          </tr>
          <tr>
            <td>服务:</td>
            <td colspan="2" align="left">
                <asp:CheckBox ID="ChkServices" runat="server" Text="站长回复此留言时候发信给我(需填写正解的邮箱)" EnableViewState="False" /><asp:RequiredFieldValidator
                    ID="RequiredFieldValidator3" runat="server" ControlToValidate="txtGuestContent"
                    Display="Dynamic" ErrorMessage="*" EnableViewState="False"></asp:RequiredFieldValidator></td>
          </tr>
          <tr>
            <td colspan="3" align="center">
                <asp:Button ID="btnSubmit" runat="server" OnClick="btnSubmit_Click" Text="提交" />&nbsp;
                <input id="Reset1" type="reset" value="重置" /></td>
          </tr>
        </table></td>
        <td style="background-image: url(/Images/light_right.gif); width: 12px">&nbsp;
      </td>
    </tr>
</table>
</center>add_word.ascx.csusing System;
....
using System.Web.UI.HtmlControls;
using Guestbook.Guestinfo;
using Guestbook.Operate;public partial class Control_AddWord : System.Web.UI.UserControl
{
    DbGuest guest = new DbGuest();
    Dboperate op = new Dboperate();
    protected void Page_Load(object sender, EventArgs e)
    {
        if (Convert.ToBoolean(ConfigurationManager.AppSettings["enableEmail"]) == true)
        {
            ChkServices.Enabled = true;
        }
        else
        {
            ChkServices.Enabled = false;
        }
    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        bool chkEmailme;
        if (ChkServices.Checked == false)
        {
            chkEmailme = false;
        }
        else
        {
            chkEmailme = true;
        }
        guest.GuestName = txtGuestName.Text;
        guest.GuestEmail = txtGuestEmail.Text;
        guest.GuestQq = txtGuestQq.Text;
        guest.GuestTitle = txtGuestTitle.Text;
        guest.GuestContent = txtGuestContent.Text;
        guest.GuestIp = Request.UserHostAddress;
        guest.GuestPostttime = DateTime.Now;
        guest.GuestInfo = Request.ServerVariables["HTTP_USER_AGENT"];
        guest.GuestPic = seleimage.Value;
        guest.Ischeck = false;
        guest.EmailMe = chkEmailme;
        op.InsertNnews(guest);
        txtGuestName.Text = null;
        txtGuestEmail.Text = null;
        txtGuestQq.Text = null;
        txtGuestTitle.Text = null;
        txtGuestContent.Text = null;
        ChkServices.Checked = false;     
    }
}
现在guest_write.aspx页面中填写相应的内容后提交提示留言成功,但在这时候刷新该页面又提交了留言一次(我已经禁用了页面的viewstate),验证控件根本不起作用
  大家帮帮忙?我昨天弄了一天,是所有办法都想尽了!!

解决方案 »

  1.   

    完成数据提交后直接重定向到当前页面即可或者去看看这个http://cncxz.cnblogs.com/archive/2005/12/25/304141.html
      

  2.   

    重定向确实可以解决问题,但如果在页面中有分页程序,当前第二页,我提交数据,重定向不就到第一页了?
    顺便还请问:  PostBackUrl=""与Response.Redirect有什么区别?
      

  3.   

    用alert()后,再把该页面location.href=location.href;//处理成功后
    Response.Write("<script lanaguage='javascript'>alert('留言成功');location.href=location.href;</script>");
      

  4.   

    PostBackUrl是提交数据的目标地址而Response.Redirect是直接转向,本页form中的数据不会传递过去=====
    如果有分页,就是需要保存页面状态了,你可以参考一下上面连接中的方法,还有一个方法是采用 Webdiyer 的 AspNetPager 分页控件,他可以将页码设置成为url中的一个参数,例如第三页
    XXX.aspx?page=3
      

  5.   

    使用了 AspNetPager 分页控件的url传递页码功能,就可以重定向到当前页面了
      

  6.   

    如果你用了分页,肯定有个当前页索引.你提交数据后,再response.redirect("view.aspx?page=" & request.querystring("currentpage")就可以解决问题