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

时间:2016-07-18 11:48:39

标签: c# asp.net

如何从其他页面调用非静态方法

我不能使用静态方法

我在母版页中有一个方法

现在,我想从母版页方法

中调用另一页面中的方法

母版页:

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();...
}

4 个答案:

答案 0 :(得分:4)

您不希望从代码隐藏new另一个ASP.NET页面。而是将代码移动到可以使用共享逻辑的类中。

答案 1 :(得分:1)

你可以简单地做

YourClassName variableName = new YourClassName();

然后将方法调用为variableName.GetDate(1,2);

您必须将方法从private更改为public,才能从其他类调用该方法。

进一步阅读Access Modifiers

答案 2 :(得分:1)

如果它是在各个页面之间共享的方法,则不应该在特定页面中声明它。好的设计原则会说它是一个单独的类的一部分。假设你称之为“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#等语言中面向对象编程的基本要素之一。

答案 3 :(得分:0)

需要将访问修饰符从私有更改为公共。 此外,您需要的所有变量都需要在其他方法中进行更新,并且需要可访问。 (阅读codecasters回答针对您的问题的更深刻的答案)

进行以下更改:

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();...
}

我不确定你的其他课程是什么,但这应该有效。