2009-03-28 16 views
1

Ich kenne meine ASP.NET, aber ich muss zugeben, ich bin dumm mit Klassen und nicht sicher, wie sie genau funktionieren. Habe auch noch nicht mit ihnen gearbeitet, aber ich möchte. Aber was ich weiß ist, dass es ein Ort ist, wo ich Code für die Wiederverwendung richtig halten kann? Wie sieht meine Klasse mit meinem Code aus?Aufruf einer Klasse in ASP.NET

Also das ist mein Code, den ich auf etwa 3 Formen verwende - aber ich möchte es in 1 Ort speichern und rufen Sie es einfach von wie wenn ich auf btnSubmit klicke.

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 

Was muss ich hier eingeben, um meinen Code oben auszuführen?

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

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

    End Try 

End Sub 

Etienne

Antwort

0

ich aus verschiedenen Orten manchmal eine „Common“ Klasse erstellen und rufen darin, dass ich öffentlich Gemeinschafts-Methoden setzen wollen.

Etwas in dieser Richtung:

Public Class Common 

Public Shared Sub MyMethod 
    'Do things. 
End Sub 

End Class 

dann würde ich es nennen mit:

Common.MyMethod 

Natürlich können Sie eine Unter/Funktionsdefinition, die die Parameter nimmt Sie benötigen.

Sorry, wenn mein VB.NET-Code ein bisschen aus ist. Ich benutze normalerweise C#.

2

Eine Klasse ist (in VB.Net) so definiert ist

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 

können Sie dann die Klasse instanziiert und seine Mitglieder nennen.

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.

Dies ist ein sehr großes Thema ist und kann auf viele verschiedene Arten definiert werden. Aber in der Regel ist das, was Sie sich vorstellen, eine N-Tier-Architektur.

Data Access Layer
Business Logic
UI Logic

Nun ist die Art und Weise eine Klasse in Ihrer Frage aufgebaut werden kann getan werden, aber auf lange Sicht ist anfällig für Wartung Entsetzen und modifiiability ist kurz geschnitten. Ganz zu schweigen von sehr anfällig für Bugs. Jede Art von Datenzugriffscode in Ihrer UI-Ebene zu platzieren, ist eine schlechte Übung.

Dies ist, wo die Macht der separaten Ebenen von Klassen (Trennung von Bedenken) in jeder Schicht Ihnen die Möglichkeit gibt, Code und die Fähigkeit zu ändern leicht für zukünftige Erweiterungen/Features usw. Dies ist in Software-Architektur ist ein sehr breites Thema in einen Beitrag zu setzen.

Aber wenn Sie wirklich interessiert sind, hier sind einige Links, um Sie in die richtigen Richtungen zu zeigen.

  1. N-Tier Architecture from Wikipedia
  2. Data Access Layer
  3. Business Logic Layer
  4. Martin Fowler is an expert in Architecture

Es ist eine Software, die den Schmerz der DAL erleichtert.
1. Linq-To-SQL Fähigkeit, Ihre Daten über .Net Objects (kompilierte Abfragen)
2. Entity Framework Version 2 von Linq-To-SQL

Und das effektiv alle Ihre SQL-Code könnte abfragen ersetzen.

1

Wenn Sie den Code wiederverwenden möchten, sollten Sie ihn in ein separates Projekt einfügen. Auf diese Weise können Sie dieses Projekt zu verschiedenen Lösungen hinzufügen (oder einfach auf die kompilierte DLL verweisen).

In Ihrem Webprojekt fügen Sie einen Verweis auf das Projekt hinzu (oder auf die DLL, wenn Sie es zuvor kompiliert haben und das Projekt nicht zur Lösung hinzufügen möchten). In Ihrem neuen Projekt fügen Sie eine Klassendatei mit dem Namen UIHelper hinzu. In dem Klassenskelett, das für Sie erstellt wird, fügen Sie eine Methode hinzu. Da die Klasse in einem separaten Projekt ist, weiß er nicht, über die Bedienelemente auf der Seite, so müssen Sie Verweise auf die in dem Methodenaufruf senden:

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

    ... here goes your code 

End Sub 

In Ihrer Seite Sie es mit Referenzen nennen zu Die Dropdown-Listen, die Sie auf der Seite haben:

UIHelper.PopulateDropdowns(lstDropdown, lstDropdown2) 

Dies wird Ihnen den Anfang machen. Es gibt noch viel mehr zu lernen über die Verwendung von Klassen ...

0

Ich denke, Sie sollten mit Visual Studio Designer Tools arbeiten, um Ihren Datenzugriff und Datenbindung zu tun. Suche nach typisierten Datensätzen

Verwandte Themen