簡體   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