1

我知道我的 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

4 回答 4

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()

了解有关在 VB.Net 中创建和使用类的更多信息。

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

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

现在可以在您的问题中构建类的方式可以完成,但从长远来看,容易出现维护恐惧并且可修改性被缩短。更不用说很容易出现错误。在 UI 层中放置任何类型的数据访问代码都是不好的做法。

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

但是,如果您真的对此感兴趣,这里有一些链接可以为您指明正确的方向。

  1. 来自维基百科的 N 层架构
  2. 数据访问层
  3. 业务逻辑层
  4. Martin Fowler 是建筑学专家

有软件可以减轻 DAL 的痛苦。
1. Linq-To-SQL 通过 .Net 对象(编译查询)查询数据的能力
2. Linq-To-SQL 的实体框架 版本 2

这可以有效地替换您所有的 SQL 代码。

于 2009-03-28T18:40:44.697 回答
1

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

在您的 Web 项目中,您添加对项目的引用(或者如果您之前编译过 dll 并且不想将项目添加到解决方案中,则添加对 dll 的引用)。

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

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

   ... here goes your code

End Sub

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

UIHelper.PopulateDropdowns(lstDropdown, lstDropdown2)

这会让你开始。还有很多关于使用类的知识......

于 2009-03-28T18:46:52.170 回答
0

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

这些方面的东西:

Public Class Common

Public Shared Sub MyMethod
  'Do things.
End Sub

End Class

然后我会使用它来调用它:

Common.MyMethod

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

对不起,如果我的 VB.NET 代码有点不对劲。我通常使用 C#。

于 2009-03-28T18:32:06.447 回答
0

我认为您应该考虑使用 Visual Studio 设计器工具来进行数据访问和数据绑定。搜索类型化数据集

于 2009-03-29T16:28:04.523 回答