A页面有一个ImageButton,其ImageUrl为B页面,怎么从B页面获得A页面的控件???
我通过调试发现B页面的Page.PreviousPage和Page.Parent都为null,那我要怎么获得A页面某个控件的控件值?
急,谢谢指点!!!//-------------A.aspx------------------//
<script type="text/javascript">
    function getBmp() {
        document.getElementById("tbHid").Text = "/9j/4A..."; //文本内容为JPG图片的base64字符串,后面的部分省略了
        document.getElementById("imgBmp").src = "B.aspx";
    }
}
</script>
<asp:TextBox id="tbHid" runat="server" style="display:none" />
<asp:ImageButton runat="server" ID="imgBmp" onclientclick="getBmp()" ImageUrl="a.gif"/>//-------------B.aspx.cs------------------//
protected void Page_Load(object sender, EventArgs e)
{   
//TextBox tbox = (TextBox)Page.PreviousPage.FindControl("tbHid");
    TextBox tbox = (TextBox)Page.Parent.Parent.FindControl("tbHid");
    string picStr = tbox.Text;
    Byte[] bitmapData = Convert.FromBase64String(picStr);
    Response.BinaryWrite(bitmapData);
}aspImageButtonImageUrl传值

解决方案 »

  1.   

    也就是我想在B页面获得A页面TextBox控件tbHid的值,在B.aspx.cx中要怎么写???
      

  2.   

    别告诉我用aspx?id=x的方式传值,我传的值是图片base64字符串,很长,一般都会超过URL传值长度
      

  3.   

    早就写过了,参考就是了:
    http://www.cnblogs.com/insus/articles/2050832.html
      

  4.   

    你的方法很好,但和我的题目是答非所问,我这个是根本不能通过Previouspage来获得,麻烦看清下题目。继续向高手求解决方案,急!!!谢谢了!
      

  5.   

    你的两个页面不是父子页面,取不了值的,除非用session  cookie
      

  6.   


    问题就在这里啊我A页面中控件tbHid的值是在A页面javascript中设置的,而javascript据我了解是前台代码,设置不了服务器端的session,用cookie是可以,但cookie一样有长度限制啊我该怎么办???太郁闷了,憋了我2天了,这个难题
    肯定有高手知道解决方法,Help me!!!
      

  7.   

    把B.aspx改为用户控件(B.ascx)即可.
      

  8.   

    如果不改也可以,A.aspx和B.aspx是同在masterpage内也可以。
      

  9.   

    怎么个改法啊为什么.ascx就可以了?
    麻烦简单写下过程多谢!!!
    真的很急,项目很紧,已经耽误2天,再耽误不起了。
      

  10.   

    同在masterpage又是怎么个访问法?虽然我的程序B.aspx是只生成图片的单独页面,改成和A同在一个masterpage下肯定不行,但也想了解这个方法谢谢高手指点!!!
      

  11.   

    图片是由第三方控件所得,只提供base64编码后的字符串。
      

  12.   

    只要定义了posturl,他会把当前控件的值用post的形式传给posturl定义的页面在posturl页面里面
    只要用Request.From[控件的名称name(不一定都是控件ID)]来获取post过来的值
    具体可以在当前页用<%= 控件.UniqueID %>查看
      

  13.   


    Refer:
    http://www.cnblogs.com/insus/archive/2013/03/08/2950300.html
      

  14.   


    请问接口代码要放在什么地方? 我放在A.aspx.cs中,但B.ascx.cs中会识别不出Itransmitable,识别不出using Insus.NET;中Insus.NET命名空间。
    我水平比较菜,谢谢老师指点。
      

  15.   

    耽误2天其实是老板的损失,而且老板损失的绝不是2天,而是大半年。可以考虑找人学学asp.net比较专业的、讲解原理和组件开发课程,而不是过于肤浅的入门课。
      

  16.   

    我可以浅浅地告诉你问题出在哪里:根本没有什么“A页面、B页面”这回事。asp.net页面Page对象一瞬间就销毁了,存在的只是在浏览器前端上的两个html页面,当你设计这个处理流程时根本不应该考虑什么asp.net页面存在。你应该学一些javascript知识,知道他们在客户端浏览器上的关系(比如修改你的连接使用javascript实现链接从而使用javascript的Opener机制,或者别的方法)。
      

  17.   

    按照你的思路是没有办法解决的,给<img>设置src属性,浏览器就向服务器发送GET请求,如果不在URL里带参数就没其他办法。但是你的目的是什么?是把这段数据发送到服务器处理,然后返回处理后的图像?倒是可以通过Session或者临时文件的方法,在onClick事件中先把数据POST到服务器一个页面处理,后台可以把数据放到Session中或者存到临时文件中,返回一个标记,然后设置<img>的src属性,带上这个标记,b.aspx页面根据这个标记去查到数据处理。这是个典型的ajax过程。用jQuery如下:
    $.ajax({
    //post数据到c.aspx,c.aspx临时保存数据,返回一个标记
    success:function(data){
        //根据返回的标记设置<img>的src属性到b.aspx,b.aspx根据标记读取数据
    }
    })
      

  18.   

    真的有点不可能做到,一般的前台和后台是有着inherit的关系,你这两个页面怎么传哈,应该只能是通过session。
      

  19.   

    一般我们传递数据的时候,对于没有关联的页面,要么是通过session,要么是通过超链接的时候,顺便带过去的。但你数据量大的话,session呗!