【发布时间】:2011-06-15 19:02:35
【问题描述】:
基本上我没有使用 MasterPage,我只是有一个带有 Default.aspx 的项目,带有一些标签、文本框等。我花了几个小时寻找解决方案,我找到了一个解决方案,但我脑子里有些东西仍然困扰着我,我没有按照自己想要的方式做。
从 PageLoad 访问它们并设置它们的属性没有任何问题。
但是我创建了一个类,就像下面的代码 sn-p 一样,它会抛出一个“对象引用未设置为对象的实例”。而且我似乎无法弄清楚我错过了什么。
class Functions
{
public static void myMethod()
{
WebForm1 mainForm = new WebForm1();
mainForm.myTextBox.Text = "Something.";
}
}
我设法做到了:
class Functions
{
public static void myMethod()
{
System.Web.UI.Page myMainForm;
myMainForm = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
TextBox myTextBox = (TextBox)myMainForm.FindControl("myTextBox");
}
}
但这不仅仅是做它,它是关于了解我错在哪里,因为我无法弄清楚,我想要一种更简单的方法来做到这一点,考虑到我对 ASP.NET 非常陌生.通常,当我在 WinForms 中编写基本应用程序时 - 我在访问不同的表单时没有问题。
而且我不喜欢为我尝试访问的每个控件执行 FindControl()。如果有一个简单而有效的解决方法,我很想听听。
提前谢谢你。
编辑:我已经在我的项目之外制作了这个示例,但这是我想要实现的想法。代码sn-ps可能有一些小错误,请见谅。
【问题讨论】:
-
你想完成什么?这一切都错了。
-
我也不明白你在做什么。
-
我只是想从一个方法中访问控件,正如我解释的那样。整个项目及其想法更大,但与我的要求无关。
-
对不起,如果我让你们难以理解,显然太新了,无法正确解释。
-
但是您实际上想做什么?如果您只是想访问某些文本框的“
Text”属性,那么只需将txtMyTextBox.Text传递给该方法。如果您需要访问整个控件(仍然不是一个好主意),则将整个txtMyTextBox传递给该方法。
标签: c# asp.net class textbox reference