Asp.net 使用ViewState变量

Asp.net 使用ViewState变量,asp.net,session,viewstate,autopostback,ispostback,Asp.net,Session,Viewstate,Autopostback,Ispostback,我想使用viewstate变量的值,该值保存在一个页面上的另一个页面上。但在执行此操作时,它显示NullReferenceException。我是ASP.net新手。请帮帮我 在register.aspx中 ViewState(“name”)=textbox1.text 在success.aspx中 dim a as string a=ViewState(“name”).toString使用Session[“name”]=textbox1.text 如果我没有弄错的话,您不能直接控制或应该直接控

我想使用viewstate变量的值,该值保存在一个页面上的另一个页面上。但在执行此操作时,它显示NullReferenceException。我是ASP.net新手。请帮帮我

在register.aspx中

ViewState(“name”)=textbox1.text

在success.aspx中

dim a as string

a=ViewState(“name”).toString
使用Session[“name”]=textbox1.text


如果我没有弄错的话,您不能直接控制或应该直接控制viewstate。

viewstate
是一种在回发过程中保持状态的技术,当您加载另一个页面时,它将丢失。因此,您需要使用另一种方式将数据发送到下一页。阅读更多关于这里的文章

跨页面发送数据的常见选择包括:

  • 质询
  • 通过设置“上一页”属性
  • 会话变量

  • ViewState仅限于一个页面,因此不能在另一个页面上使用。原因是ViewState在页面输出的隐藏字段中序列化,该字段在回发时传输到客户端并返回到服务器
    如果要将数据传输到其他页面,您还有其他几种选择:

    • 正如@AnastacioGianareas也指出的,会话内存就是其中之一。它位于服务器上,但会话将在用户不活动一段时间后过期。由于位于服务器上,如果会话中分配了许多用户和大量内存,则会降低应用程序的可伸缩性
    • 将数据作为查询字符串参数移交给其他页面,例如重定向到“Success.aspx?name=”。这将适用于可以放入查询字符串中的少量数据(例如ID或名称)。客户机还可以使用该查询字符串参数请求Success.aspx,这一点很重要,因此应该为非关键数据保留该参数,并仔细验证
    • 使用cookie将其传输到客户端,然后再传输回来
    这为备选方案提供了一个很好的概述。

    来源:

    视图状态是ASP.NET页面框架使用的方法 默认情况下,在往返之间保留页面和控件值。什么时候 将呈现页面的HTML、页面的当前状态和 回发期间需要保留的值序列化为 base64编码字符串并在视图状态隐藏字段中输出,或 田地

    页面间持久化数据的选项多种多样,具体取决于您的需求。MSDN中的此选项描述了每个选项以及您应该考虑的事项

    对于您的需求,无论是查询字符串还是会话状态,似乎都是最好的解决方案


    作为旁注,始终验证您的“状态”变量(无论您选择哪种方法),以确保它们不为null且为预期类型。i、 e.所有这些值都将存储为字符串,如果要将变量用作另一种类型(int、double等),则应确保其有效。此外,如果您继续查询字符串,请考虑任何安全因素,因为用户可能/将修改这些值。

    您不能为此使用ViewState。你需要了解它的用途。ViewState用于在同一页面的多个请求之间保留值,您不会直接调用ViewState。当register.aspx发布数据(表单数据)时,可以使用Request.form对象获取数据。阅读此(视图状态)。viewstate的思想是在页面刷新时在表单字段中保留相同的信息(使用ajax,这个解决方案是无用的,对于10mb+的viewstate要非常小心)。实际上,我想执行我的学院给出的作业问题。它说要设计一个登录系统,其中用户注册,用户名和密码存储在viewstate变量中,下一步是创建一个登录页面,用户可以在其中登录和注销。我使用会话变量成功地完成了这项工作。