如何从其他页面调用非静态方法
我不能使用静态方法
我在母版页中有一个方法
现在,我想从母版页方法
中调用另一页面中的方法母版页:
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();...
}
答案 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();...
}
我不确定你的其他课程是什么,但这应该有效。