从C#中的另一个页面调用一个函数

时间:2011-12-01 11:20:53

标签: c# asp.net .net

我想从另一个页面调用页面的一些公共方法

这是我的代码

   public class FirstPage : Page
   {
   public string Connect()
   {
    // method code here
   }
   // etc...
   }

从其他页面调用此方法时出错

4 个答案:

答案 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...
   }

查看herehere

答案 3 :(得分:-2)

在第二页中,输入可以访问第一页功能的代码  

<%@ Reference Page="~/page1.aspx" %>
  

现在你可以调用函数来读取第一页

 page1.func1();

page1 a=new page1();
a.func1();