在ASP.NET中调用一个类

时间:2009-03-28 18:23:18

标签: asp.net vb.net class class-design

我知道我的ASP.NET,但我不得不承认,我对课程很愚蠢,不确定它们是如何工作的。还没有与他们合作但我想。但我所知道的是,这是一个我可以保持代码重用正确的地方吗?我的班级将如何看待我的代码?

所以这是我在大约3个表单上使用的代码 - 但我想将它保存在1个位置,只需在我点击btnSubmit时调用它。

Dim strConnection As String = ConfigurationManager.ConnectionStrings("ConnectionString").ConnectionString
    Dim con As SqlConnection = New SqlConnection(strConnection)
    Dim cmd As SqlCommand = New SqlCommand
    Dim objDs As DataSet = New DataSet
    Dim dAdapter As SqlDataAdapter = New SqlDataAdapter

    cmd.Connection = con
    cmd.CommandType = CommandType.Text
    cmd.CommandText = "SELECT distinct FIELD FROM TABLE order by FIELD"

    dAdapter.SelectCommand = cmd
    con.Open()
    dAdapter.Fill(objDs)
    con.Close()

    If (objDs.Tables(0).Rows.Count > 0) Then

        lstDropdown.DataSource = objDs.Tables(0)
        lstDropdown.DataTextField = "FIELD"
        lstDropdown.DataValueField = "FIELD"
        lstDropdown.DataBind()
        lstDropdown.Items.Insert(0, "Please Select")
        lstDropdown2.Items.Insert(0, "Please Select")

    Else

        lblMessage.Text = "* Our Database seem to be down!"

    End If

我必须在此处执行上面的代码?

Protected Sub btnSubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnSubmit.Click

    ?????????????????????????????????

    End Try

End Sub

艾蒂安

4 个答案:

答案 0 :(得分:2)

一个类(在VB.Net中)被定义为

Public Class Person

private _firstName as string
private _lastName as string

'''Constructor with no params
public Sub New()
  _firstName = ""
  _lastName = ""
End Sub

'Contructor with params
Public Sub New(FirstName as String, LastName as String)
  _firstName = FirstName
  _lastName = LastName
End Sub

Public Property FirstName As String
 Get
  return _firstName
 End Get
 Set(value as String)
  _firstName = value
 End Set
End Property

Public Property LastName As String
     Get
      return _lastName
     End Get
     Set(value as String)
      _lastName = value
     End Set
    End Property

Public Function HitHomeRun() As Boolean
  ....'Do some stuff here
End Function
End Class

然后,您可以实例化该类并调用其成员。

Dim p as New Person()
p.FirstName = "Mike"
p.LastName = "Schmidt"

dim IsHomeRunHit As Boolean = p.HitHomeRun()

Learn more about creating and consuming classes in VB.Net.

这是一个非常大的主题,可以通过许多不同的方式进行定义。但通常你要冒险进入的是N层架构。

数据访问层
业务逻辑
UI逻辑

现在可以在你的问题中建立一个类的方式,但从长远来看,很容易出现维护恐惧和可修改性的问题。更不用说非常容易出错了。在UI层中放置任何类型的数据访问代码都是不好的做法。

这是每层中具有单独的类层(关注点分离)的强大功能,使您能够重用代码并能够轻松修改以用于将来的扩展/功能等。这是进入软件架构非常广泛的主题放在一个帖子中。

但如果您真的对此感兴趣,可以通过一些链接指向正确的方向。

  1. N-Tier Architecture from Wikipedia
  2. Data Access Layer
  3. Business Logic Layer
  4. Martin Fowler is an expert in Architecture
  5. 有软件可以减轻DAL的痛苦 1. Linq-To-SQL通过.Net Objects(编译查询)查询数据的能力
    2. Entity Framework Linq-To-SQL的第2版

    这实际上可以替换所有SQL代码。

答案 1 :(得分:1)

如果要重用代码,则应将其放在单独的项目中。这样,您可以将该项目添加到不同的解决方案(或仅引用已编译的dll)。

在您的Web项目中,您可以添加对项目的引用(如果您之前已经编译过它,则添加到dll,并且不希望将项目添加到解决方案中)。

在新项目中添加一个类文件,例如名为UIHelper的文件。在为您创建的类骨架中,您可以添加方法。由于该类位于单独的项目中,因此它不知道页面中的控件,因此您必须向方法调用中的控件发送引用:

Public Shared Sub PopulateDropdowns(lstDropdown As DropDownList, lstDropdown2 As DropDownList)

   ... here goes your code

End Sub

在您的页面中,您可以通过引用页面中的下拉列表来调用它:

UIHelper.PopulateDropdowns(lstDropdown, lstDropdown2)

这将帮助您入门。关于使用类还有很多东西需要学习......

答案 2 :(得分:0)

我有时会创建一个“Common”类,并在其中放置我想要从不同位置调用的公共Shared方法。

这些方面的东西:

Public Class Common

Public Shared Sub MyMethod
  'Do things.
End Sub

End Class

然后我会用:

来调用它
Common.MyMethod

显然,你可以使用你需要的参数的子/函数定义。

很抱歉,如果我的VB.NET代码有点偏。我通常使用C#。

答案 3 :(得分:0)

我认为您应该考虑使用visual studio designer工具来进行数据访问和数据绑定。搜索类型化数据集