繁体   English   中英

从另一页调用非静态方法

[英]Call non static method from another page

如何从另一个页面调用非静态方法

我不能使用静态方法

我在母版页中有一种方法

现在,我要从母版页方法调用另一页中的方法

母版页:

protected void Pagination_Click(object sender, EventArgs e)
{
    int Count = Convert.ToInt32(DRCount.Text);
    LinkButton LinkButton = (LinkButton)sender;
    int Select = Convert.ToInt32(LinkButton.Text);
    int Num2 = Count * Select;
    int Num1 = Num2 - Count;
    **//Calling GetData method in 01.aspx** 
}


01.aspx.cs page:

public void GetData(int Num1, int Num2)
{
    int Count = Convert.ToInt32(this.Master.Count);
    int PriceSort = Convert.ToInt32(this.Master.Price);
    string NameSort = this.Master.Name.ToString();...
}

您不想从codebehind new另一个ASP.NET页。 而是将代码移到可以利用共享逻辑的类中。

你可以做

YourClassName variableName = new YourClassName();

然后将该方法称为variableName.GetDate(1,2);

您必须将方法从private更改为public ,以便从另一个类调用它。

进一步阅读访问修饰符

如果它是在各个页面之间共享的方法,则实际上不应在特定页面中声明它。 好的设计原则会使它成为一个单独的类的一部分。 假设您将其称为“ MyDataClass”。 (显然选择更合适的东西)。

protected void Pagination_Click(object sender, EventArgs e)
{
  int Count = Convert.ToInt32(DRCount.Text);
  LinkButton LinkButton = (LinkButton)sender;
  int Select = Convert.ToInt32(LinkButton.Text);
  int Num2 = Count * Select;
  int Num1 = Num2 - Count;

  MyDataClass dataClass = new MyDataClass();
  dataClass.GetData();
}

并在另一个名为MyDataClass.cs的文件中

public class MyDataClass
{
  public void GetData(int Num1, int Num2)
  {
    //...
  }
}

这样,您可以根据需要在多个页面中使用它,甚至可以轻松地在另一个项目中重复使用它。 这种责任的抽象是学习诸如C#之类的面向对象编程的基础知识之一。

访问修饰符需要从私有更改为公共。 此外,您需要使用其他方法更新的所有变量都必须可访问。 (请阅读代码广播员的答案,以获取针对您的问题的更深刻的答案)

进行以下更改:

protected void Pagination_Click(object sender, EventArgs e)
{
    int Count = Convert.ToInt32(DRCount.Text);
    LinkButton LinkButton = (LinkButton)sender;
    int Select = Convert.ToInt32(LinkButton.Text);
    int Num2 = Count * Select;
    int Num1 = Num2 - Count;
    var otherClass = new OtherClass();
    otherClass.GetData(Num1,Num2);
}


01.aspx.cs page:

public void GetData(int Num1, int Num2)
{
    int Count = Convert.ToInt32(this.Master.Count);
    int PriceSort = Convert.ToInt32(this.Master.Price);
    string NameSort = this.Master.Name.ToString();...
}

我不确定您的其他班级叫什么,但这应该可行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM