首页 新闻 会员 周边

只有刷新后才能看到更新?请教

0
悬赏园豆:100 [已解决问题] 解决于 2010-08-09 10:23

下面是代码:
我的愿意是“添加一个文章评论后,就马上从数据里读取前10条最新记录出来。”,当然这个刚添加的记录是在这个范围之内的。
然而添加记录后并没显示出我的新加数据,但是刷新的话就会又添加一条记录(这里暂时叫做记录2,先前叫做记录1),这时候会显出(记录1),而没有显示出(记录2)


其中 id 是对应所评论的文章id
pagesize currentpage 是分页变量

 


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace zcms
{
public partial class Blog : System.Web.UI.Page
{
public int id;
public MODEL.BlogInfo blog;
public string url;
protected void Page_Load(object sender, EventArgs e)
{
bindBlog();
if (!IsPostBack) {
bindGuestBook();
}
}

private void bindBlog() {
id
= Convert.ToInt32(Request.QueryString["id"]);
blog
= BLL.Blog.GetBlogById(id);
this.Title = blog.Title;
url
= Request.Url.ToString();


}

private void bindGuestBook() {
rp_guestbook.DataSource
= BLL.GuestBook.GetBookOnPage(10, 1, id);
rp_guestbook.DataBind();
}


protected void AddGuestBook(object sender, EventArgs e) {
id
= Convert.ToInt32(Request.QueryString["id"]);
MODEL.GuestBookInfo guestbook
= new MODEL.GuestBookInfo();
guestbook.User
= name.Value;
guestbook.Email
= email.Value;
guestbook.Content
= content.Value;
guestbook.WebSite
= website.Value;
guestbook.PostTime
= DateTime.Now.ToString();
guestbook.IsBest
= 0;
guestbook.IsPass
= 1;
guestbook.IsTop
= 0;
guestbook.Replay
= id;
BLL.GuestBook.AddGuestBook(guestbook);
bindGuestBook();

}
}
}

 

ahjszll的主页 ahjszll | 初学一级 | 园豆:52
提问于:2010-08-07 16:39
< >
分享
最佳答案
0

添加成功后,重新加载页面!记得是重新加载。

在AddGuestBook方法下面,不用加bindGuestBook();页是写上下面代码。

Response.Write("<script language=javascript>alert('您已成功留言...!');window.location.href='这个页面.aspx';</script>");

收获园豆:60
Astar | 高人七级 |园豆:40805 | 2010-08-07 16:56
hao
ahjszll | 园豆:52 (初学一级) | 2010-08-09 10:23
其他回答(3)
0

再刷新又有一条记录,这是因为再次提交Request,所以产生了两条重复的记录。此时触发if (!IsPostBack) { bindGuestBook(); }所以产生新的列表。

你可以跟踪下BLL.GuestBook.GetBookOnPage(10, 1, id);这个方法,看看获取数据集时是否有缓存。

要想获取guest列表,最有效的方法是再次刷新页面,或跳转到原页面。

如果不想整个页面刷新。可以用ajax局部刷新页面

收获园豆:20
邀月 | 园豆:25475 (高人七级) | 2010-08-07 17:01
0

ASP.NET在你点击按钮后如果再刷新则会重复提交。

再新增完数据后调用方法bindGuestBook();逻辑没错。

如果想防止刷新后再次提交可以使用Resonse.Redirect()重新定向到这个页面,如果想界面友好性,可以在评论那边加个锚记“#guestbook”,Resonse.Redirect("Blog.aspx#guestbook");

收获园豆:20
kyo-yo | 园豆:5587 (大侠五级) | 2010-08-07 17:12
0

添加之后再刷新会再添加一条新的记录,很有可能除了ID不一样,其它都一样。可以限制页面重复提交,或者重定向到这个页面。

单步是解决这个问题的最佳方法!

dnteye | 园豆:308 (菜鸟二级) | 2010-08-08 19:09
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册