<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="test.aspx.cs" Inherits="PDMS.test" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title>无标题页</title>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        关键字:<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
        <br />
        <br />
        显示查询关键字:<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
        <asp:Button ID="Button1" runat="server" Text="查询" OnClick="Button1_Click" /><br />
        <br />
        <a href="test.aspx?page=2">第二页</a> <a href="test.aspx?page=3">第三页</a></div>
    </form>
</body>
</html>后台代码
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;namespace PDMS
{
    public partial class test : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Label1.Text = ViewState["test"].ToString();
            }
        }        protected void Button1_Click(object sender, EventArgs e)
        {
            ViewState["test"] = TextBox1.Text;
            Label1.Text = ViewState["test"].ToString();
        }
    }
}这样会提示 未将对象引用设置到对象的实例。我的本意是想实现 输入关键字后 点查询,然后再点第二页,第三页,还能通过ViewState获取到输入的关键字.

解决方案 »

  1.   

     if (!IsPostBack)
    {
    ViewState["test"]="12345678910";
    Label1.Text = ViewState["test"].ToString();
    }
      

  2.   

    public string key
    {
      get{return ViewState["Test"]??string.Empty:ViewState["Test"].ToString();}
      set{ViewState["Test"]=value;}
    }
      

  3.   

    ViewState["test"]的有效范围只是本页面内,跨页面用session或传参数
      

  4.   

    是获取不到的 ~  超链相当于新开页用get 或 post 方式 传递数据,或将数据存储在Session中或改用LinkButton实现分页
      

  5.   


    这样ViewState里的值就永远是你输入的 12345678910了
      

  6.   

    1.
    ViewState["test"] 没初始化 -> 未将对象引用设置到对象的实例
    2.
    viewstate 是页面级的  多看看书
    3.
    cache /session  /?参数方式          代替
      

  7.   

    test.aspx?page=2&KeyWord="+TextBox1.Text这样不行
      

  8.   

    <a href="test.aspx?page=2" onclick="go(this)">第二页</a> <a href="test.aspx?page=3" onclick="go(this)">第三页</a>
    function go(obj)
    {
          obj.href= obj.href+escape("&keyword="+document.getElementById('<%=TextBox1.ClientID%>').value);
    }Request.QueryString["keyword"]
      

  9.   

    ViewState在页面跳转或者关闭的时候就失效了,你搜索结果要显示在其他页面中,你肯定要用QueryString传参过去,或者POST过去。
    还有一个办法,你就在本页绑定一个列表并且分页,也别跳转了,这样不就可以继续用本页的ViewState了么?
      

  10.   

    是有阵子没见啦 ~
    也没跑太远,还玩CSDN开心农场呢 ~  就是没心思编码,就好久没来论坛了。
      

  11.   

          CSDN    菜鸟问题太多了.