C# 从类文件调用page方法
我的页面代码隐藏是C# 从类文件调用page方法,c#,asp.net,C#,Asp.net,我的页面代码隐藏是 public partial class _Default : System.Web.UI.Page { BLMethods objBLMethods = new BLMethods(); protected void Page_Load(object sender, EventArgs e) { objBLMethods.DisplayValue(); } public void BindTextbox(strin
public partial class _Default : System.Web.UI.Page
{
BLMethods objBLMethods = new BLMethods();
protected void Page_Load(object sender, EventArgs e)
{
objBLMethods.DisplayValue();
}
public void BindTextbox(string s)
{
TextBox1.Text=s;
}
}
我有一个班
public class BLMethods
{
public void DisplayValue()
{
BindTextbox("This is from Bl Class");
}
}
这是生成错误,BindTextBox方法位于页面中,除非创建对象,否则无法从其他类访问该页面
有没有可能在不创建页面对象或使方法静态的情况下调用页面方法?简短的回答是没有。但是,您可以通过其他方式实现相同的效果 一种方法是让页面实现一个包含方法BindTextBox的接口,并将该接口类型的参数作为构造函数参数或方法参数传递给类 另一种方法是让您的对象引发一个事件,您的页面可以处理该事件 最后,您可以让类方法接受具有BindTextBox签名的委托参数,例如Action,并在类中调用委托
我确信还有其他方法。将委托传递给实例
public class BLMethods
{
readonly Action<string> _displayValue;
public BLMethods(Action<string> displayValue)
{
_displayValue = displayValue;
}
public void DisplayValue()
{
_displayValue("This is from Bl Class");
}
}
您可以向BLMethods添加构造函数,该构造函数采用默认值并将其分配给BLMethods中的字段: 在默认情况下,添加一个构造函数来实例化它:
public _Default()
{
this.objBLMethods = new BLMethods(this);
}
但老实说,我认为你需要认真考虑你的关注点分离。尝试将应用程序分成不同的层。您昨天问过这个问题吗?在上一篇文章中,你有非常合适的答案,为什么还要重复这个问题呢?我的公司要求我用不同的方式来回答。昨天的答案没有让我的团队领导满意。你觉得这很难的原因是你不应该这样做。让前端代码处理前端,而只在后端处理逻辑。昨天被愚弄了。@PavanKumar-所以来这里不是为了满足你老板的要求。您的技术问题已经得到回答,不要重复。
private _Default def;
public BLMethods(_Default def)
{
this.def = def;
}
public _Default()
{
this.objBLMethods = new BLMethods(this);
}