asp.net 在C#中从另一页调用函数

b0zn9rqh  于 2022-11-19  发布在  .NET
关注(0)|答案(5)|浏览(208)

我想从另一个页面调用该页面的某个公共方法
这是我的代码

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

从另一个页面调用此方法时会出现错误

ohfgkhjo

ohfgkhjo1#

如果该方法对两个页面都是通用的,那么可以考虑为继承自Page的页面使用基类。

public YourPage: BaseClass
{
     public void MyMethod()
     {
         base.BaseMethod();
     }
}

public BaseClass: System.Web.UI.Page
{
    //.. your shared method goes here
    protected BaseMethod()
    {
         //.. logic here
    }
}

如果您的页面共享相同的功能区域(例如,它们都是关于订单处理的),这是有意义的

5m1hhzi4

5m1hhzi42#

如果两个页面都想共享方法,那么你可以把它们放在另一个类/类库中,然后从两个页面示例化和调用它。
您将使用的方法由方法的性质决定;考虑上下文。如果我们在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执行任何操作。

oxiaedzo

oxiaedzo3#

你的方法是错误的100%。请,重构你的代码,并找到其他方法来实现你的任务。
为了在多个页面之间共享某个方法,您可以实现自定义Page类

public class FirstPage : YourCustomPageClass
   {
   public string A()
   {
       return this.YourCUstomPageCLassMethod();
   }
   // etc...
   }


public class SecondPage : YourCustomPageClass
   {
   public string B()
   {
    return this.YourCUstomPageCLassMethod();
   }
   // etc...
   }

看看herehere

rqmkfv5c

rqmkfv5c4#

假设您要计算一组值的平均值。
创建一个空白代码页,我将其命名为mu.cs。代码如下:

using System;
namespace mu
{
    public static class mu
    {
        public static double themean(double[] thearray, int n)
        {
            double mysum = 0;
            double mymu = 0;
            int i = 0;
            for (i = 0; i < n; i++)
                mysum += thearray[i];
            mymu = mysum/n;

            return mymu;
        }
    }
)

假设您的另一个页面是test.cshtml.cs,并且您的数组有4个值。
然后,在适当的区段中,您可以呼叫函式。

public class testModel : PageModel
{
    public int i = 0;
    public int n = 4;
    public double mymean = 0;
    public double[] myarray = new double[n];
 
    public void OnGet()
    {
        for (i = 0; i < n; i++)
            myarray[i] = i;
        mymean = mu.mu.themean(myarray, n);
    }
}

在调用函数时,第一个mu指的是命名空间,第二个mu指的是类。

tyg4sfes

tyg4sfes5#

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

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

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

page1.func1();

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

相关问题