Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/30.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.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
对象引用未设置为ASP.net中对象的实例_Asp.net_.net_Vb.net - Fatal编程技术网

对象引用未设置为ASP.net中对象的实例

对象引用未设置为ASP.net中对象的实例,asp.net,.net,vb.net,Asp.net,.net,Vb.net,基本上,我试图在共享函数内的文本框上进行输出,但我没有访问共享函数内的文本框,然后我创建了一个默认类的对象来访问文本框。 之后,我访问Textbox,但在运行状态下,它会给我错误NullReference,当我切换时,我发现Textbox1.text=Nothing而不是Textbox1.text=”“ 下面是我为示例编写的小代码 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handle

基本上,我试图在共享函数内的文本框上进行输出,但我没有访问共享函数内的文本框,然后我创建了一个默认类的对象来访问文本框。
之后,我访问Textbox,但在运行状态下,它会给我错误NullReference,当我切换时,我发现Textbox1.text=Nothing而不是Textbox1.text=”“
下面是我为示例编写的小代码

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles       
    Me.Load        
        TextBox1.Text = "123"        
        TestClass()        
    End Sub       

    Protected Shared Sub TestClass()       
        Dim MyF1 As New _Default       
        MyF1.TextBox1.Text = "ABC"       
    End Sub       

TextBox1
是页面类的实例变量,可能由ASP.NET设计器创建

因此,您无法在静态/共享上下文中访问它

当ASP.NET收到请求时,它会:

  • 创建_默认类的实例
  • 根据来自客户端的数据(例如表单数据)填充_Default类的控件
  • 执行许多与此上下文无关的其他操作
在您的场景中,您创建了
\u Default
类的实例,但不设置其任何属性

这会导致
Textbox1
属性为null,这就是为什么它在使用时抛出
NullreferenceException

有两种可能的解决方案:

  • TestClass
    方法标记为实例方法(删除
    Shared
    关键字)
  • \u Default
    的当前实例作为参数传递给静态/共享方法,如下所示:

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load        
        TextBox1.Text = "123"        
        TestClass(Me)        
    End Sub       
    
    Protected Shared Sub TestClass(currentPage as _Default)       
        currentPage.TextBox1.Text = "ABC"       
    End Sub 
    
第二种解决方案要求将
TextBox1
属性声明为
public

(如果有任何VB错误,很抱歉;我是C#程序员☺)

希望你能得到答案。按下面提到的方法尝试

MyF1.TextBox1 As New TextBox
MyF1.TextBox1.Text = "ABC"

它应该可以正常工作。

c#标签无效,请将其更改为vb.netWhere和何时创建TextBox1?TextBox1在Design上创建Section@Wolf,此控件不是静态/共享的。默认情况下,它的访问修饰符受保护。@PankajGarg在i
TextBox1.Text=“ABC”时出现错误
line@Wolf第二种解决方案要求将TextBox1属性声明为public。不,受保护的访问修饰符就足够了。@PankajGarg你说得对,
protected
就足够了。谢谢注意。我会编辑我的答案。@w0lf我可以调用
TestClass(我)吗
这来自其他共享函数它给出了以下错误“方法参数必须用括号括起来”
MyF1.TextBox1 As New TextBox
MyF1.TextBox1.Text = "ABC"