我想从另一个页面调用页面的一些公共方法
这是我的代码
public class FirstPage : Page
{
public string Connect()
{
// method code here
}
// etc...
}
从其他页面调用此方法时出错
答案 0 :(得分:5)
如果该方法对两个页面都是通用的,那么请考虑为从Page继承的页面使用基类。该方法可以去那里。
public YourPage: BaseClass
{
public void MyMethod()
{
base.BaseMethod();
}
}
public BaseClass: System.Web.UI.Page
{
//.. your shared method goes here
protected BaseMethod()
{
//.. logic here
}
}
如果您的网页共享相同的功能区域,这是有意义的,例如他们都是关于订单处理的
答案 1 :(得分:2)
这不是很好的做法。如果两个页面都想共享该方法,那么您可以将它们放在另一个类/类库中,并实例化并从两个页面调用它。
您将使用的方法取决于方法的性质;考虑上下文。如果我们处于Page
的上下文中,那么最好考虑这里的功能应该与页面中应该发生的活动相关 - 即表示(GUI的呈现)。
如果功能与演示相关,则考虑使用共享类或common base class。
在问题中,要共享的方法是Connect
- 如果这是连接到数据的服务或数据库,那么考虑将此代码封装为额外的库;然后,可以在多个项目中(无论显示的样式)重用此库,并且逻辑将独立显示;例如:
public partial class MyCodeBehindCS : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
MyNamespace.MyCustomClass myClass = new MyNamespace.MyCustomClass();
myClass.Connect();
var myResult = myClass.DoSomething();
}
}
然后你可以用myResult做任何你想做的事。
答案 2 :(得分:1)
你的方法是错误的100%。请重新考虑您的代码并找到实现任务的其他方法。
为了在多个页面之间共享某些方法,您可以做的是实现自定义页面类
public class FirstPage : YourCustomPageClass
{
public string A()
{
return this.YourCUstomPageCLassMethod();
}
// etc...
}
public class SecondPage : YourCustomPageClass
{
public string B()
{
return this.YourCUstomPageCLassMethod();
}
// etc...
}
答案 3 :(得分:-2)
在第二页中,输入可以访问第一页功能的代码
<%@ Reference Page="~/page1.aspx" %>
现在你可以调用函数来读取第一页
page1.func1();
或
page1 a=new page1();
a.func1();