2

过去,我在使用 WebMatrix 维护会话状态以及在预期它们超时时处理它们时总是遇到很多问题(主要是因为我还在学习)。

必须始终记住用户输入,因为如果他们提交并发生自定义错误,我不希望他们必须将所有信息重新输入到表单中。

我想我(最终)找到了一种方法,可以在将来需要时正确维护和管理超时会话变量。

我意识到还有其他几种在网页之间传输数据的方法,相信我,如果适用,它们肯定会被首先使用。这个问题只与我觉得会话变量是我最好的选择有关。

我的问题是,我一直认为我已经弄清楚了,然后,只有在我设置了一半以上的编码之后,我才意识到它为什么不能很好地工作,然后找到一些草率(但有效)的解决方法这至少适用于该项目。

我将使用会话变量的项目使用公共数据库与 Web 界面组合。通常有 3 个主要页面:添加条目页面、编辑条目页面和查找条目页面。添加条目页面和查找条目页面最终发布并重定向到编辑条目页面。

在我开始我的下一个项目之前,我认为最好先问问我的方法是否至少朝着正确的方向前进,或者我是否仍然没有完全正确地接近这个方向。

这是我认为可能有效的方法(尽管它似乎有点太容易了):

  1. 每页使用局部变量。
  2. 在(IsPost)分支中,在发布/重定向之前根据局部变量分配会话变量。
  3. 在另一页上,刚被重定向后,使用会话变量分配新的静态局部变量。

换句话说:我将(在必要时)仅使用会话变量来传输将在完全可接受的时间内发生的数据(不允许会话状态有足够的时间超时),然后在需要,每页。

当被迫使用 WebMatrix 中的会话状态时,我是疯了还是这是处理此问题的最佳方法(或至少是一种体面可行的方法)?

对不起,如果这是一个愚蠢的问题 xD

4

1 回答 1

2

在我看来,您不应该使用 Session 变量来记住用户在表单中输入的内容。表单 - 添加或编辑 - 应发布到自身以进行验证。这样,值在 Request.Form 集合中可用。如果出现验证错误,您可以轻松地重新填充表单。成功提交后,您插入或更新数据库,然后重定向到另一个页面以防止重复提交。

如果使用得当,会话变量真的很容易使用。我怀疑您的困难出现是因为您将它们用于错误的场景。

于 2012-12-18T20:42:28.253 回答