页面刷新与提交的问题

MyLf 2006-05-22 10:36:13
最近在做一个B/S项目。发现Asp.Net页上,在点按钮提交后,刷新页面,会重复执行该按钮的操作。
比如,有一按钮是作删除动作,提交页面后。然后点页面右键刷新,会重复执行该删除动作,这当然会出错。

我知道可以通过两种方式不让其重复执行提交动作:在提交后执行
1.Response.Redirect(Request.Url.AbsoluteUri);
2.Response.Write("<script>window.location.href=window.location.href;</script>");

问题是:每个提交动作都要去写?我有n个页面,每个页面有n个操作(新增、删除、编辑等等),那不是要写很多?为什么会这样呢?
另外,这样的话,我的“返回”按钮将不能很好的实现,因为Request.UrlReferrer.AbsoluteUri的值最后会变成当前页了,而不是之前的页面。

有没有比较好的方法解决提交与页面刷新的问题?
...全文
351 21 打赏 收藏 转发到动态 举报
写回复
用AI写文章
21 条回复
切换为时间正序
请发表友善的回复…
发表回复
jimo_lang 2006-11-02
  • 打赏
  • 举报
回复
mark
wtoeb 2006-10-12
  • 打赏
  • 举报
回复
马克
MyLf 2006-07-08
  • 打赏
  • 举报
回复
问题解决了。找不到很满意的办法。
是将前一个页面的url传入下一个页面(将入前要进行Encode编码)
MyLf 2006-05-25
  • 打赏
  • 举报
回复
提交页面后刷新倒是可以用那两个方法解决,但后退就成问题了。因为之前的页面已经不知道是哪个页面了
MyLf 2006-05-23
  • 打赏
  • 举报
回复
楼上的,跟IsPostBack无关,又不是加载数据的问题。
zlkingdom 2006-05-23
  • 打赏
  • 举报
回复
在Page_Load事件中加上if(!Page.IsPostBack)这个判断试试
iheshi 2006-05-23
  • 打赏
  • 举报
回复
比较支持Montaque(每天回答两个问题) 的意见。
要不,就使用您说的Response.Write("<script>window.location.href=window.location.href;</script>");的方法。当然,确实要手工写很多代码了。好像确实没有什么好的方法能降低代码量。

另外,既然刷新都有问题了,后退大概也要出问题吧。
MyLf 2006-05-23
  • 打赏
  • 举报
回复
好象是把继承的那句话去掉吧
楼主是2003吧

--------------------------
老兄发错贴子了吧?
Radar2006 2006-05-23
  • 打赏
  • 举报
回复
mark
wlei9802 2006-05-23
  • 打赏
  • 举报
回复
好象是把继承的那句话去掉吧
楼主是2003吧

http://bbs.chinaworkroom.com
MyLf 2006-05-23
  • 打赏
  • 举报
回复
唉。。。偶提的问题总是没有答案的。

开发B/S的兄弟姐妹应该很多吧? 你们没有这样的问题吗?真是奇怪啊。。
MyLf 2006-05-22
  • 打赏
  • 举报
回复
to:dgrwang()
你说的方法我的问题里不是已经说过了么?何况只是一条语句而已,写个函数不是更麻烦。

Montaque(每天回答两个问题)提供的链接我有空再研究一下。。。
dgrwang 2006-05-22
  • 打赏
  • 举报
回复
你上一次执行的操作,肯定会在刷新中再次执行改操作。
方法就是执行完刷新时让程序指向本页,等于页面重新加载了,再刷新就不会造成事件重新执行问题。嫌麻烦可以把执行本页写个函数调用一下
Montaque 2006-05-22
  • 打赏
  • 举报
回复
如果您希望改动最少,首先尽可能的抽象出需要你控制重复提交的特征。

也就是说对于一个postback过来的页面,你如何知道她需要控制重复提交。

有了这个特征之后,您可以使用MVC模式。 Controller,用一个HttpModule区实现。代码改动最少。参考

http://www.microsoft.com/china/MSDN/library/architecture/patterns/esp/ImpFrontControllerInASP.mspx
yanziwu1980 2006-05-22
  • 打赏
  • 举报
回复
比较感兴趣。关注中。
MyLf 2006-05-22
  • 打赏
  • 举报
回复
人呢??
MyLf 2006-05-22
  • 打赏
  • 举报
回复
这是我的第一个正式的B/S项目。我相信不少兄弟做过了很多B/S项目,对这样的情况是如何处理的呢?

每次提交后重定向本页,在一定程序上可以解决问题,但我觉得麻烦了点。另外,我的页面上需要“返回”操作,就是返回之前的页面(可以通过Request.UrlReferrer.AbsoluteUri取得),但如果重定向到本页后,Request.UrlReferrer.AbsoluteUri已是本页面了。这返回页面的操作就没法实现。
伴老思源 2006-05-22
  • 打赏
  • 举报
回复
在执行完操作后,重定向一下,哪怕再重定向到本页也行,
虽然是麻烦了些,但却是最稳定的。
zhoujijunnt 2006-05-22
  • 打赏
  • 举报
回复
mark ,顶一个!
  • 打赏
  • 举报
回复
关注中。。。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧