【问题标题】:ASP.NET BasePage dataset type is not defined未定义 ASP.NET BasePage 数据集类型
【发布时间】:2011-07-27 02:26:34
【问题描述】:

我正在创建一个 ASP.NET 2.0 Web 应用程序,它使用由所有其他 .aspx 页面继承的 BasePage.aspx。我设计了一个包含 3 个存储过程的数据集,称为 dsBaseInfo。我将它声明为类的私有成员,当我运行应用程序时,它告诉我未定义 dsBaseInfo 类型。我还尝试了一个 Dataset 而不是我的 dsBaseInfo 并且我得到了同样的错误,类型未定义。我已经尝试将 Private dsBase 作为 dsBaseInfo,将 Private dsBase 作为 dsBaseInfo = nothing,将 Private dsBase 作为新的 dsBaseInfo,将 Private dsBase 作为 Dataset,等等。我什至尝试将声明移动到 PreInit 子和相同的错误。我还在继承 BasePage 的 .aspx 中将 Private dsBAse as dsBaseInfo 完成,它可以在该页面上运行。

Imports System
Imports System.Web.UI
Imports System.Data.SqlClient

Public Class BasePage
    Inherits System.Web.UI.Page

    Private dsBase As dsBaseInfo = Nothing    'dataset
    Private _userInfo As UserInfo

    Private Sub Page_PreInit(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.PreInit
        If User.Identity.IsAuthenticated Then
            _userInfo = New UserInfo

            If dsBase Is Nothing Then
                If Session("BaseInfo") Is Nothing Then
                    dsBase = New dsBaseInfo
                    RetrieveBaseInfo(dsBase)

                    Session("BaseInfo") = dsBase
                Else
                    dsBase = TryCast(Session("BaseInfo"), dsBaseInfo)
                End If
            End If

        End If

    End Sub

    Private Sub RetrieveBaseInfo(ByVal dsBase As dsBaseInfo)
        Using da As New dsBaseInfoTableAdapters.ssp_GetUserBaseInfoTableAdapter
            da.Fill(dsBase.ssp_GetUserBaseInfo, User.Identity.Name)
        End Using

        Dim intID As Integer = dsBase.ssp_GetUserBaseInfo.Rows(0)(dsBase.ssp_GetUserBaseInfo.IDColumn.ColumnName)

        Using da As New dsBaseInfoTableAdapters.ssp_GetCompaniesTableAdapter
            da.Fill(dsBase.ssp_GetCompanies, intID)
        End Using

        Using da As New dsBaseInfoTableAdapters.ssp_GetMasterMenuListTableAdapter
            da.Fill(dsBase.ssp_GetMasterMenuList, intID)
        End Using
    End Sub

End Class

【问题讨论】:

    标签: .net asp.net dataset


    【解决方案1】:

    两个页面的文件顶部是否都包含Imports System.Data? (我在提供的代码中没有看到它。)DataSet 位于该命名空间中,因此您需要导入该命名空间才能在不完全限定的情况下引用该类。

    【讨论】:

    • System.Data 在项目的引用中。
    • @langc334:我想问一下,如果这不起作用,那很好。但是项目引用和导入的命名空间是有区别的。在这种情况下,顶部的那三个 Imports 行是关键。他们实际上所做的只是告诉该文件(并且该文件)要为类引用哪些隐式命名空间。就目前而言,要在该文件中使用DataSet,需要将其声明为System.Data.DataSet。如果您将Imports System.Data 添加到文件顶部,您应该可以直接将其引用为DataSet
    • 谢谢大卫,只是让我觉得继承 basepage 的文件不需要导入语句,但 basepage 需要。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-13
    • 1970-01-01
    • 1970-01-01
    • 2017-03-12
    • 1970-01-01
    相关资源
    最近更新 更多