1

我有一个人们可以用来上传文件的表单,我想确保在上传后按下刷新按钮不会触发重复上传。我正在考虑的方法是会话变量和页面重定向(post/redirect/get 模式),但它们都有问题

会话变量

问题是它们在页面之间共享,因此如果用户使用相同的逻辑打开了多个页面,或者他们在不同的记录上打开了同一页面的多个副本,则可能会错误地检测到刷新。另一个问题是会话状态过期,所以它不太可靠。但是,如果它对某人有帮助,我会发布代码。此函数应在页面 on_load 事件中调用,并将其返回值分配给在表单的提交事件中检查的变量。

Private Function checkForRefreshOnLoadAfterPostback() As Boolean
    Dim refreshed As Boolean = (Page.IsPostBack AndAlso Session("GuidOnloadPostbackRefreshCheck") <> ViewState("GuidOnloadPostbackRefreshCheck"))
    Session("GuidOnloadPostbackRefreshCheck") = Guid.NewGuid().ToString()
    ViewState("GuidOnloadPostbackRefreshCheck") = Session("GuidOnloadPostbackRefreshCheck")
    Return refreshed
End Function

发布/重定向/获取

选项 2 是在处理表单提交后重定向页面,但是我的页面有带有其他表单控件的选项卡,如果可能的话,我想保留它们的值。所以我的问题是,如何在刷新后防止再次提交表单的同时维护页面的 viewState?有什么方法可以选择性地从页眉中删除数据?

4

0 回答 0