请问如何通过Request获取Response传递的泛型参数
比如我Response.Redirect(...)的时候传递了一个泛型的参数List<decimal>类型的
我获取这个参数应该怎么去获取呢?

解决方案 »

  1.   

    get 方式 只能传递 string 类型的参数如果你想传递泛型 需要序列化传递
      

  2.   

    可以考虑跨网页公布(cross-page posting)
      

  3.   

    序列化就是把一个对象转化成二进制流存储起来,当下次使用的使用再反序列化得到数据的原型;
    如下实例代码:
     static void Main(string[] args)
        {
         //定义一个Book对象
         Book book = new Book("Day and Night", 30.0f, "Bruce");
         
         //Book对象序列化
         using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Create))
         {
          BinaryFormatter formatter = new BinaryFormatter();
          formatter.Serialize(fs, book);
         }
         book = null;
         
         //反序列化
         using(FileStream fs = new FileStream(@"C:\book.dat", FileMode.Open))
         {
          BinaryFormatter formatter = new BinaryFormatter();
          book = (Book)formatter.Deserialize(fs);//在这里大家要注意咯,他的返回值是object
         }
        }-------------------------------------------------- 
    “苏州软件(微软技术)实训基地”由苏州工业园区政府和微软(中国)有限公司共同建立,由苏州高博软件培训中心承办。基地以苏州工业园区软件人才培养和服务外包基地建设需求为导向,充分利用微软的软件技术、产业教育和项目管理经验,帮助学员系统掌握微软技术、真实体验项目角色、全面提升职场竞争力。 公司网址http://www.gemsoftware.com.cn 
      

  4.   

    using System;/// <summary>
    /// User 的摘要说明
    /// </summary>
    [Serializable]
    public class User
    {
        private int _id;
        private string _name;    public int ID
        {
            set { _id = value; }
            get { return _id; }
        }
        public string Name
        {
            set { _name = value; }
            get { return _name; }
        } public User()
    {
    //
    // TODO: 在此处添加构造函数逻辑
    //
    }
        public User(int id,string name)
        {
            _id = id;
            _name = name;        
        }
    }
      

  5.   


    <asp:Button ID="btnRedirect" Text="跳转" runat="server" OnClick="btnRedirect_Click" />
    protected void btnRedirect_Click(object sender, EventArgs e)
        {        List<User> l = new List<User>();
            User u = new User(101, "xiaoT");
            l.Add(u);
            u = new User();
            u.ID = 102;
            u.Name = "xxx";
            l.Add(u);
            XmlSerializer formatter = new XmlSerializer(l.GetType());
            StringWriter writer = new StringWriter();
            formatter.Serialize(writer, l);
            string url = "Default.aspx?l=" + Server.UrlEncode(writer.ToString());
            writer.Close();
            writer.Dispose();
            Response.Redirect(url);
        }
      

  6.   

    Default.aspxValidateRequest="false"protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (!string.IsNullOrEmpty(Request.QueryString["l"]))
                {
                    XmlSerializer formatter = new XmlSerializer(typeof(List<User>));            
                    StringWriter writer = new StringWriter();
                    writer.Write(Server.UrlDecode(Request.QueryString["l"]));
                    StringReader sr = new StringReader(writer.ToString());
                    writer.Close();
                    writer.Dispose();
                    List<User> l = formatter.Deserialize(sr) as List<User>;
                    if (l != null)
                    {
                        foreach (User u in l)
                        {
                            Response.Write("ID:" + u.ID.ToString() + ",Name:" + u.Name + "<br>");
                        }
                    }
                    sr.Close();
                    sr.Dispose();
                }
            }
         }
      

  7.   

    实体注意要声明为[Serializable]
    不然序列化会出错