【请教】关于.NET中标签下的子页面怎样调用父页面的方法??

时间:2022-12-21 11:24:15
现在有一个页面A,里面通过<iframe>标签加载子页面B,
现在遇到的问题是,请问在.NET中 怎样在子页面B调用父页面A 后台代码(.cs)里的方法??
我想做的效果是:点击子页面B的一个按钮,调用父页面A的一个方法,弹出一个自定义提示窗口。 
例如:
A页面后台类声明为:public partial class Student: System.Web.UI.
B页面后台类声明为:public partial class Teacher: System.Web.UI.

______该怎样在B页面调用A页面的方法,请大家帮忙一下,谢谢!

19 个解决方案

#1



每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分  

#2


在b中
parent.document.getElementById("button1").click();

#3


parent.window.document.getElementById("button1").click();

#4


楼上的兄弟,这个是访问其他页面的单击事件吧,我是想访问A类的特定的公有方法哦。

#5


parent.document.getElementById('<%=btn.ClientID %>').click();

#6


楼上几个兄弟,你们貌似误解我的意思,我是想在ASP.NET中,在B页面的后台类中,调用A页面后台类中的公有方法,你说的那些是JS调用吧。

#7


调用A页面方法
否则使用ajax

#8


楼上几个兄弟,你们貌似误解我的意思,我是想在ASP.NET中,在B页面的后台类中,调用A页面后台类中的公有方法,你说的那些是JS调用吧。

==>

click后就可以调用A 的后台方法.

在B的后台调用A的后台,如果是与上下文无关是可以的,如果有关则不行.

无关:

new A().public方法();

#9


引用 8 楼 cpp2017 的回复:
在B的后台调用A的后台,如果是与上下文无关是可以的,如果有关则不行.

无关:

new A().public方法();

请问怎样才与上下文无关呢?
我在B页面后台类中 new 一个 A页面后台类的实例,但编译时候提示找不到该类型或命名空间。

#10


无关是指,你使用这个方法的时候,与你客户A页面请求的数据没有任何关系,否则就有问题.

另:你的类名写得不对.

#11


类名不对?
我是添加新项后自动生成的后台类
public partial class Student: System.Web.UI.Page{

  protected void Page_Load(object sender, EventArgs e)
        {
                    
        }

}

#12


对了,我还试过在A页面和B页面加上同样的命名空间,然后在B页面导入命名空间,然后用“命名空间名字.类名.公共方法()”这格式调用,编译出错,提示在命名空间下找不到指定类别。

#13


new 命名空间名字.类名().公共方法();
如果同一空间,省略命名空间名字

#14


哎,还是不行,原来不同页面后台类调用这么困难的,A页面和B页面分别处于不用文件夹下,是不是这个原因影响的?
刚才试了命名空间,还是提示:
“找不到类型或命名空间名称“adminobj”(是否缺少 using 指令或程序集引用?) ”

#15


看来我这问题还是不能解决,郁闷呀。!

#16


何必呢?

为什么一定要调用B页面的后台公用方法?你可以将B页面的公用方法,写在某个类里面,然后B页面可以调用此类里面,A页面也可调用此类,问题不就结了?

比如:
public class abc
{
    public static void 需要复用的方法()
{}
}

B页面某方法:
privaet void xx()
{
//调用abc类的方法
abc.需要复用的方法();
}

A页面也可调相同方法
privaet void axx()
{
//调用abc类的方法
abc.需要复用的方法();
}

或者有特殊要求?如果是,你可通过反射的手段来进行调用.

#17


A和B在一个命名空间,最好在一个工程中编译,A类的方法属性必须为public,如果在B中不想用new的话,可以声明A的那个方法为public static为静态方法。用你的那个方法是可以的new 命名空间名字.类名().公共方法();

#18


因为的想做这样的效果,就是当B页面单击某个按钮后,调用A页面的一个公共方法,这个方法是控制A页面中一些控件的显示问题,楼上几个兄弟说,写公共类,我也知道呀,通用嘛,但是公共类能控制A页面的控件吗??不能对吧,所以我才想在B页面访问A页面。。!

#19


由于都是传统的网页,都有刷新的,也不能像Flex那样能跟着某个类中变量值的变化而发生处理,所以我想做这么普通的效果都头疼了。。汗!

#1



每天回帖即可获得10分可用分!小技巧:教您如何更快获得可用分  

#2


在b中
parent.document.getElementById("button1").click();

#3


parent.window.document.getElementById("button1").click();

#4


楼上的兄弟,这个是访问其他页面的单击事件吧,我是想访问A类的特定的公有方法哦。

#5


parent.document.getElementById('<%=btn.ClientID %>').click();

#6


楼上几个兄弟,你们貌似误解我的意思,我是想在ASP.NET中,在B页面的后台类中,调用A页面后台类中的公有方法,你说的那些是JS调用吧。

#7


调用A页面方法
否则使用ajax

#8


楼上几个兄弟,你们貌似误解我的意思,我是想在ASP.NET中,在B页面的后台类中,调用A页面后台类中的公有方法,你说的那些是JS调用吧。

==>

click后就可以调用A 的后台方法.

在B的后台调用A的后台,如果是与上下文无关是可以的,如果有关则不行.

无关:

new A().public方法();

#9


引用 8 楼 cpp2017 的回复:
在B的后台调用A的后台,如果是与上下文无关是可以的,如果有关则不行.

无关:

new A().public方法();

请问怎样才与上下文无关呢?
我在B页面后台类中 new 一个 A页面后台类的实例,但编译时候提示找不到该类型或命名空间。

#10


无关是指,你使用这个方法的时候,与你客户A页面请求的数据没有任何关系,否则就有问题.

另:你的类名写得不对.

#11


类名不对?
我是添加新项后自动生成的后台类
public partial class Student: System.Web.UI.Page{

  protected void Page_Load(object sender, EventArgs e)
        {
                    
        }

}

#12


对了,我还试过在A页面和B页面加上同样的命名空间,然后在B页面导入命名空间,然后用“命名空间名字.类名.公共方法()”这格式调用,编译出错,提示在命名空间下找不到指定类别。

#13


new 命名空间名字.类名().公共方法();
如果同一空间,省略命名空间名字

#14


哎,还是不行,原来不同页面后台类调用这么困难的,A页面和B页面分别处于不用文件夹下,是不是这个原因影响的?
刚才试了命名空间,还是提示:
“找不到类型或命名空间名称“adminobj”(是否缺少 using 指令或程序集引用?) ”

#15


看来我这问题还是不能解决,郁闷呀。!

#16


何必呢?

为什么一定要调用B页面的后台公用方法?你可以将B页面的公用方法,写在某个类里面,然后B页面可以调用此类里面,A页面也可调用此类,问题不就结了?

比如:
public class abc
{
    public static void 需要复用的方法()
{}
}

B页面某方法:
privaet void xx()
{
//调用abc类的方法
abc.需要复用的方法();
}

A页面也可调相同方法
privaet void axx()
{
//调用abc类的方法
abc.需要复用的方法();
}

或者有特殊要求?如果是,你可通过反射的手段来进行调用.

#17


A和B在一个命名空间,最好在一个工程中编译,A类的方法属性必须为public,如果在B中不想用new的话,可以声明A的那个方法为public static为静态方法。用你的那个方法是可以的new 命名空间名字.类名().公共方法();

#18


因为的想做这样的效果,就是当B页面单击某个按钮后,调用A页面的一个公共方法,这个方法是控制A页面中一些控件的显示问题,楼上几个兄弟说,写公共类,我也知道呀,通用嘛,但是公共类能控制A页面的控件吗??不能对吧,所以我才想在B页面访问A页面。。!

#19


由于都是传统的网页,都有刷新的,也不能像Flex那样能跟着某个类中变量值的变化而发生处理,所以我想做这么普通的效果都头疼了。。汗!

#20