Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从另一页调用非静态方法_C#_Asp.net - Fatal编程技术网

C# 从另一页调用非静态方法

C# 从另一页调用非静态方法,c#,asp.net,C#,Asp.net,如何从另一个页面调用非静态方法 我不能使用静态方法 我在母版页中有一个方法 现在,我想从母版页方法调用另一个页面中的方法 母版页: protected void Pagination_Click(object sender, EventArgs e) { int Count = Convert.ToInt32(DRCount.Text); LinkButton LinkButton = (LinkButton)sender; int Select = Convert.To

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

我不能使用静态方法

我在母版页中有一个方法

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

母版页:

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

访问修饰符需要从私有更改为公共。 此外,您需要在其他方法中寻求更新的所有变量都需要是可访问的。(阅读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();...
}

我不确定您的另一个类叫什么,但这应该可以用。

访问修饰符需要从private更改为public。 此外,您需要在其他方法中寻求更新的所有变量都需要是可访问的。(阅读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();...
}
我不确定你的另一个类叫什么,但这应该可以用。

你可以简单地做

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

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

进一步阅读

你只需

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

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


进一步阅读您不想
新建
另一个来自codebehind的ASP.NET页面。相反,将代码移动到可以利用共享逻辑的类。

您不想从codebehind创建另一个ASP.NET页面。相反,将代码移动到一个可以利用共享逻辑的类中。

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

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

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

这样,您就可以根据需要在任意多的页面中使用它,甚至可以轻松地在另一个项目中重复使用它。这种职责的抽象是学习C#等语言中的面向对象编程的基本内容之一。

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

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

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

这样,您就可以根据需要在任意多的页面中使用它,甚至可以轻松地在另一个项目中重复使用它。这种责任的抽象是学习C#等语言的面向对象编程的基本内容之一。

谢谢你的回答。你能告诉我一个例子直到看到它吗?我认为你的回答巧妙地涵盖了为什么这不应该是一个问题,我试图概述一般问题。更新了我的答案,以帮助OP回答他的具体问题。谢谢你的回答。你能告诉我一个样本直到看到它吗?我认为你的回答巧妙地涵盖了为什么这不应该是一个问题,我试图概述一般问题。更新了我的答案以帮助OP回答他的具体问题。你是说ASP.NET使用OO?o_O@Bart大多数人在it中编程时不会这样做,但这并不意味着你不能你是说ASP.NET使用OO?o_O@Bart大多数人在it中编程时不会这样做,但这并不意味着你不能