我有一个运行良好的非常简单的页面 - 直到我将代码放入使用母版页的新页面。然后我得到错误:
你调用的对象是空的
我的简单(独立)工作页面是:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="emaillookuptest.aspx.vb" Inherits="emaillookuptest" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:SqlDataSource ID="LoginDataSource" runat="server"
ConnectionString="<%$ ConnectionStrings:customer_support_devConnectionString %>"
ProviderName="<%$ ConnectionStrings:customer_support_devConnectionString.ProviderName %>"
SelectCommand="SELECT [id_staff], [semail] FROM [staff] WHERE ([semail] = ?)">
<SelectParameters>
<asp:FormParameter FormField="TextBoxEmailAddress" Name="semail"
Type="String" />
</SelectParameters>
</asp:SqlDataSource>
<p>
Email Address:
<asp:TextBox ID="TextBoxEmailAddress" runat="server" MaxLength="100"
Width="200px"></asp:TextBox>
</p>
<asp:Button ID="LoginButton" runat="server" Text="Log In" />
<br />
<asp:Label ID="LabelLoginResults" runat="server"></asp:Label>
</div>
</form>
</body>
</html>
以及背后的代码:
Partial Class emaillookuptest
Inherits System.Web.UI.Page
Protected Sub LoginButton_Click(sender As Object, e As System.EventArgs) Handles LoginButton.Click
Dim dv As New Data.DataView
dv = LoginDataSource.Select(DataSourceSelectArguments.Empty)
Dim c As Integer = dv.Count.ToString()
If c <> 0 Then
LabelLoginResults.Text = "Staff ID: " & dv.Table.Rows(0)("id_staff").ToString()
Else
LabelLoginResults.Text = "That email address was not found"
End If
End Sub
End Class
如您所见,直截了当。
但是,一旦我尝试将此代码与现有母版页一起使用,就会在线出现错误“对象引用未设置为对象的实例”:
Dim c As Integer = dv.Count.ToString()
我可以看到的唯一可能的原因是在母版页中我有以下内容:
Dim dv As New Data.DataView
dv = MyLanguageDataSource.Select(DataSourceSelectArguments.Empty)
LitSiteFooterCopyright.Text = dv.Table.Rows(0)("SiteFooterCopyright").ToString()
如您所见,我引用了两个不同的数据源(新页面中的“LoginDataSource”和母版页中的“MyLanguageDataSource”)。
问题是因为我使用了两次“dv”或“Data.DataView”或“DataSourceSelectArguments”吗?一次进入母版页,又一次进入我的新 emaillookuptest.aspx 页面?
如果是这样,欢迎提出解决方法或正确方法的建议:)
更新:如果我从母版页中删除所有代码,我仍然会收到同样的错误。现在这让我更加困惑,因为代码本身就可以完美运行,但是如果我将它放入一个空的母版页排列中,我会在以下行遇到相同的错误: Dim c As Integer = dv.Count.ToString()