这个贴有问过,可是我还是不懂.
有二个页面,一个123.aspx一个abc.ascx
现在在123.aspx中用Register方法引入abc.ascx,当在123.aspx.cs中如何取得
abc.aspx中textbox的值?
前个贴有网友说在abc.ascx中直接增加
public string Name
{
 get{return TextBox1.Text.Trim();}
set{TextBox1.Text=value;}
}
那么在123.aspx.cs如何调用?
谢谢,请愿谅我笨呀!

解决方案 »

  1.   

    protected System.Web.UI.UserControl MyUserControl;
    Object obj = MyUserControl.MyPubAttribute;
    ps:MyUserControl是你html代码中用户控件的名字
      

  2.   

    protected System.Web.UI.UserControl MyUserControl;
    Object obj = MyUserControl.MyPubAttribute;
    ps:MyUserControl是你html代码中用户控件的名字是在123.aspx中调用吗?还是在哪?
    按楼上的办法我在123.aspx.cs的类中增加了
    protected System.Web.UI.UserControl tbxName;// 与abc.ascx的Textbox同名
    Response.Wrie(tbxName.Text);
    却出现
    异常详细信息: System.NullReferenceException: 未将对象引用设置到对象的实例。
      

  3.   

    如果你的abc.ascx的名称叫abc的就应该写成:
    protected System.Web.UI.UserControl abc;另:这个代码是在123.aspx.cs中写的
      

  4.   

    protected System.Web.UI.UserControl abc;
    Object obj = MyUserControl.MyPubAttribute;
      

  5.   

    如果你的abc.ascx的名称叫abc的就应该写成:
    protected System.Web.UI.UserControl abc;另:这个代码是在123.aspx.cs中写的
      

  6.   

    回复人: lzt7((分头诗人)http://www.lzt7.com)
    protected System.Web.UI.UserControl abc;
    Object obj = MyUserControl.MyPubAttribute;
    那abc不就丢了?
    上面的myUserControl我改成abc可是MyPubAttribute
    无论我在abc.ascx.cs中定义属性,然后在123.aspx.cs中用abc.Name
    还是直接换成Textbox对象 abc.tbxName都是一样的错误.
    还有,我直接在abc.ascx.cs的类中定义了Name属性或者方法返回tbx.Text
    但结仍然是一样的错误.郁闷....
      

  7.   

    因为在html里面,你的abc.ascx控件的名称默认为abc1,所以应该写成:protected System.Web.UI.UserControl abc1;
    Object obj = abc1.Name;
      

  8.   

    是这样的,在abc.ascx中有一个<asp:TextBox id="txbName" ../>
    然后在123.aspx中
    <%@ Register TagPrefix="Module" TagName="logon"  Src="modules/abc.ascx" %>
    那现在在123.aspx.cs中当一个<asp:button ...>发生click时,如何取得abc.ascx的txbName的值.
    很抱歉,谢谢!
      

  9.   

    在123.aspx.cs里面要引入abc.ascx空间!!,
    看看在123.aspx.cs里面有没有abc.ascx所在的名称空间!!
      

  10.   

    把 abc.ascx 里面的 textbox 控件变成 PUBLIC 型。就可以了。
      

  11.   

    然后如此调用:
    abc1.txbName.Text
      

  12.   

    你们的abc.ascx有很多的脚本吗(C#)?
    我的*.ascx页面一般都只是放着webControls/htmlControls的控件,不放代码,
    如果有需要操作的都丢到了*.ascx.cs里面!
    按我看duwamish来说,它是利用aspx的事件驱动*.ascx.cs中的事件,基本上没发现有在*.ascx里放入C#脚本的例子.
    一般不会有人在.ascx中申明public System.Web.UI.UserControl TextBox ...这样的吧?
    实在抱歉,刚学.net,对于我的无知请愿谅!,谢谢各位的解答,让我学了不少东西.
    不过,还有个很大的疑问,在我用visual studio 2003工具开发asp.net时,如果把DEUG设为TRUE那么在页面出错的时候,会有一个:显示完整的编译源,的提示,当然打开它的时候,很惊讶的发现,所有的代码是VB.NET为脚本!有些不解!
    谢..
      

  13.   

    估计你这个得你用客户端javascript来控制
      

  14.   

    将abc Class 定义为abstract 即可! 我也是这样的! 呵呵!
      

  15.   

    帅哥:
    public System.Web.UI.UserControl yourusercontrol不是放在ascx.cs文件里,
    而是放在*.aspx.cs里,一般你的usercontrol命名为uc,那么拖到aspx页面就默认为uc1,
    你在codebehind *.aspx.cs文件里这样:public System.Web.UI.UserControl uc1,
    然后在page_load()里或其他地方这样:string sName = uc1.MyPubAttribute;
    MyPubAttribute是你自定义的属性。
      

  16.   

    谢谢楼上的回复.不过我实在笨.
    我在test.ascx中放了一个textbox命名为tbxname
    并且在test.ascx.cs中定义了
    public string Name{...}
    然后把test.ascx拉到test.aspx中,自动有了一个<uc1:test ...></uc1:test>
    最后在test.aspx.cs中定义
    public System.Web.UI.UserControl uc1;在button_click函数内定义
    string name=uc1.Name;
    编辑时出错,提示:
    D:\webSite\test\WebForm2.aspx.cs(51): “System.Web.UI.UserControl”并不包含对“Name”的定义谢谢..
      

  17.   

    在test.ascx.cs 页面 定义属性
    假设为public string Name{...}在aspx 页面引用后 你可以在设计视图中看到id 为test1 这个用户控件
    接着
    protected test test1;string name=test1.Name 即可
      

  18.   

    最后再请教一下gsky
    为什么一定要定义 protected test test1;才有效?
    我试把test1改成 t都不成.
    实在是抱歉,问了这么多问题.有没有什么推荐好的书给我们学习?
    谢..
      

  19.   

    改成t也可以的 只要你在设计视图中把 控件id改成t 这两个要一致才行
      

  20.   

    呵,我要问的意思是:为什么在aspx中的usercontrol名称直接影响到了aspx.cs中定义的名称?
    不晓得您是否看了duwamish7,为什么它那的ascx中的控件值,直接可以在ascx.cs中处理,然后用aspx.cs中的代码调用?我模仿却失败!
    谢谢!