在EnterpriseInfo.aspx中执行Server.Transfer,打开EnterpriseInfoContactEdit.aspx
代码如下:
Server.Transfer ("EnterpriseInfoContactEdit.aspx?action=modify&enId=" +
                this.Request.Params["enId"].ToString() + "&contactId=" + 
                RadGrid1.Items[e.Item.ItemIndex].Cells[2].Text); 执行以上代码之后新页面EnterpriseInfoContactEdit.aspx的地址栏确实看不到参数了,
可是仍能在EnterpriseInfoContactEdit.aspx页面源中看到如下源代码:
    <form name="aspnetForm" method="post" action="EnterpriseInfoContactEdit.aspx?action=modify&amp;enId=263&amp;contactId=5815326" id="aspnetForm">
这正是我所不希望出现的,
如何避免用户以一切办法看到如同以上contactId=5815326这样的参数值?
不要告诉我使用Session,Cookie,ViewState这样的方法,
我想尽量使用Server.Transfer的方法.

解决方案 »

  1.   

    server.urlEncode()
    加密传输的参数
      

  2.   

    不晓得你为什么不用session。目前我想到两个办法。并且已经试验成功。一。放在某个类的静态成员里,例如。public class Class1
    {
        public static string ss; public Class1()
    {
    }
    }例如a.aspx向b.aspx传值。a.aspx:
    Class1.ss = "ssssssss";        this.Response.Redirect("b.aspx");b.aspx:protected void Page_Load(object sender, EventArgs e)
        {
            this.Response.Write(Class1.ss);
        }
    第二种方法,把值放数据库里,呵呵,别扔臭鸡蛋呀。
      

  3.   

    不晓得你为什么不用session。 浪费资源
      

  4.   

    那没什么好办法。Server.Transfer执行机制又和response.redirect不一样。再说,就是一样也不行,除非你自己写一个加密类给加密了。客户端就不会直接看到很明确的参数值了。