如何解决“对象引用未设置为对象的实例”错误?

时间:2012-04-11 16:36:41

标签: asp.net vb.net

我通过codeBehind中的请求对象传递以下内容:

获取要创建的请求代码。

Dim Code As String = Request("code").ToString()

及以下是我的标记页barcodes.aspx

  <form id="Form1" method="post" runat="server">
  <img src="barcodes.aspx?code=XXXXX" alt="barcode" /> 

   <asp:Image id="myBarCode"  runat="server"></asp:Image>
  </form>

为什么我收到上述错误?

7 个答案:

答案 0 :(得分:3)

如果Request("code")为null,则在其上调用.ToString()将为您提供空引用异常。

答案 1 :(得分:1)

检查Request("code")是否为空。如果为null,则在调用ToString()

时将出现对象引用错误

答案 2 :(得分:1)

我认为这必须处理您尝试获取页面上图像的查询字符串值这一事实。 Request()只会获取“请求页面”的查询字符串,这是您所在的页面,而不是图像本身。因此,如果您希望从图像源中提取代码,则代码将始终为null

答案 3 :(得分:0)

您可以简单地删除ToString(),因为Request(item key)返回String:

Dim Code As String = Request("code")

答案 4 :(得分:0)

检查查询字符串值是否存在:

Dim Code as String = String.Empty
If Not Request.QueryString("code") Is Nothing Then
    Code = Request.QueryString("code")
End If

答案 5 :(得分:0)

您还可以使用string.isnullorempty()函数来测试request.querystring值的内容

答案 6 :(得分:0)

您需要实际提交表单(POST)或传递URL(GET)中的参数以通过Request对象获取请求参数。两种简单的方法(很多)可以做到这一点:

选项1.仅保留barcodes.aspxbarcodes.aspx.vb。在barcodes.aspx put:

<form id="Form1" method="post" runat="server">
  <input type="hidden" name="code" value="XXXXX" /> 

  <asp:Image id="myBarCode"  runat="server"></asp:Image>
  <asp:Button runat="server" Text="Submit"></asp:Button>
</form>

放入barcodes.aspx.vb中的Page_Load

If PostBack Then
  Dim code As String = Request.Form("code")
  If Not String.IsNullOrEmpty(code) Then
    ' Generate your image here, a code has been specified
  End If
End If

然后点击aspx页面上的提交按钮。

选项2.将其拆分为两个aspx页面,但与上面基本相同。

submitme.aspx中放入此内容(对于POST,单击按钮):

<form id="Form1" method="post" runat="server">
  <input type="hidden" name="code" value="XXXXX" /> 

  <asp:Button runat="server" Text="Submit" PostBackURL="barcodes.aspx"></asp:Button>
</form>

或者这个(对于GET,请点击链接):

<a href="barcodes.aspx?code=XXXXX">Click Me</a>

barcodes.aspx.vb中将其放入Page_Load(适用于GET或POST选项):

Dim code As String = Request("code")
If Not String.IsNullOrEmpty(code) Then
  ' Generate your image here, a code has been specified
End If

barcodes.aspx中,您只需要:

<asp:Image id="myBarCode"  runat="server"></asp:Image>