我有一堆操作ASPX页面元素的方法,此时将它们封装到它们自己的静态对象中是有意义的。但是,我似乎无法访问ASPX页面之外的表单元素。有没有关于如何做的想法?
发布于 2012-06-20 21:55:27
您需要将Page本身传入到类中,如下例所示:
ASPX页面
<form id="form1" runat="server">
<div>
<asp:TextBox ID="txtTest" runat="server" Text="Test" />
</div>
</form>
代码隐藏
protected void Page_Load(object sender, EventArgs e)
{
Process p = new Process(this);
string s = p.GetTextBoxValue();
}
类
public class Process
{
public Page thePage { get; set; }
public Process(Page page)
{
thePage = page;
}
public string GetTextBoxValue()
{
TextBox tb = (TextBox)thePage.FindControl("txtTest");
return tb.Text;
}
}
Process可能不是类的最佳名称,但这只是一个演示。
此外,将Page对象传递到另一个类将该类与Page对象紧密耦合。我建议您重新考虑要创建的类的设计,不要完全依赖Page对象。
发布于 2012-06-20 21:44:45
您需要将Page对象作为参数之一传递给您的类方法,这样它的元素就可以在类中访问。
例如,如果你有一个这样的类:
public class CMyDataClass {
public bool CompareText(System.Web.UI.Page i_oPage) {
TextBox oTextBox = i_oPage.FindControl("TextBox1");
return (oTextBox.Text == "My Data");
}
}
您可以在页面中像这样使用它:
CMyDataClass oMyDataClass = new CMyDataClass();
if (oMyDataClass.CompareText(this)) {
Response.Write("Ok!");
}
发布于 2012-06-20 21:50:56
如果您真的想封装功能,我想您最好创建一个类,在其中将相关元素传递给构造函数。
如果您的目标是在其他页面中重用,则可以创建一个继承的基页。另一种选择是在母版页中执行从页面引用的内容。
我认为有需要提出更详细的问题,才能提供更详细的答案。
https://stackoverflow.com/questions/11128606
复制相似问题