我在A.aspx中用B.aspx?id=23链接打开了B.aspx,B页面是用string id = Request.QueryString["id"];获取id的,然后我在B页面的form1用post提交到C.aspx,C页面做了一些操作后我想用Response.Redirect("B.aspx?id=23")回到B.aspx,但是执行到string id = Request.QueryString["id"];处id=null,这就引起里后面一些异常了,怎么办啊?
    据说post过去,不能get回来。那么该怎么转回来了。

解决方案 »

  1.   

    通过server.transfer或Postback传值到C.
    或URL传值再获取
      

  2.   

        这个并不复杂啊!A.aspx表示主题目录,B.aspx表示主题内容页,最下面有块区域是回帖用的,C.aspx就是回帖处理页。
        能否提供一些更具体的解决方案。
      

  3.   

    我好像学过这个,我一般都用Session,简单点....
    呵呵,只是我的拙见罢了...
      

  4.   

    我这里Session[""]已经泛滥了,假设不改变string id = Request.QueryString["id"]的前提下,怎么解决问题。
      

  5.   

    你是通过B页面调到C页面,C页面做些操作后再把值传回B页面。
    其实ASP。NET有一个专门的方法
    server.transfer,你查下MSDN帮助,有详解。
      

  6.   

    在B页面  获取ID后  赋值给lab.text  然后 post   
    最后C页面 request.form["lab的name"].toString或者
    在B页面 用viewstate保存  传递到C页面 
    Response.Redirect("C.aspx?id="+viewstate["myid"].toString()) C页面接受这个ID值
      

  7.   

    var retValue=window.showModalDialog我觉得可以用这种方法去处理c页面,c页面直接response.write那个需要返回b页面的id,这个retValue就是那个返回的id值了。。
      

  8.   

    我不信鬼,所以特别测试了一下,根本不会发生你说的情况。页面Default.aspx<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebForm._Default" %><!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>
        <div>
        <form id="form1" action="B.aspx" method="post">
            <input type="text" id="t1" name="t1" value='<% =Request.QueryString["id"] %>' />
            <input type="submit" value="提交" />
        </form>
        </div>
        </body>
    </html>
    protected void Page_Load(object sender, EventArgs e)
            {
                string aaa = Request.QueryString["id"];
                if (aaa == null)
                    throw new Exception("真的不行啊。");
            }
    页面B.aspxprotected void Page_Load(object sender, EventArgs e)
            {
                    string t1 = Request.Form["t1"].ToString();
                    Response.Redirect("Default.aspx?id=" + t1 + "B");
            }
      

  9.   

    应该是id参数没有从B页面传递到C页面。
    在B页面的form1的提交地址中,在"C.aspx"后面加上id参数:
    "C.aspx?id=" + Request.QueryString["id"]
      

  10.   

    非常感谢有这么多人关注我这个问题,不过从7楼开始就误解我题目的意思了,我的表达能力真差。我的意思是:C.aspx回到B.aspx时B页面出错了。
      

  11.   

    跳转的时候URL里面有的话应该是不会出现这个错误的
    如果真要出现.那考虑用cookies保存一下还有就是你在C页面先判断一下跳转的确定是这个格式"B.aspx?id=23"
    这样id应该是不会读出来是空的.跟踪一下.从C页面跳转的时候先看看"B.aspx?id="+xx的xx是否有值
      

  12.   

    为了防止xx没值,我特意直接用23这个数字做实验的:B.aspx?id=23,这个id从A链接到B没问题,C跳转到B就有问题了。
      

  13.   

    我的是:index页面将值传给open页面,open页面做些处理后在转向index页面。跟你的应该是差不多,但是,我在index页面把UName放在了Session里面。
    看下,这是我用的代码:
    index.aspx:Session["UName"]=UName.Text ;
    ...
    Response.Redirect("Open.aspx?UName="+UName.Text.ToString()+"&&pwd="+pwd.Text.ToString());
    open.aspx:string str1=Request.QueryString["UName"];
    string str2=Request.QueryString["pwd"].ToString();
    if(dac.CheckRole(str1, str2))
    Response.Redirect("index1.aspx?UName="+str1);
                     else
              Response.Redirect("index.aspx?UName="+str1);不知道对你有没有帮助。
      

  14.   

    对于post过来的参数,当前是不会消失的,但是如果当前页面由于某种原因重新加载了,那么post的值就会丢失.
      

  15.   

    if Request.querstring("id")=nothing then exit sub
      

  16.   

    在传递丢失的时候建议改用url
      

  17.   

    post  C.aspx?id=Request.QueryString["Id"];