Hej!
Jag har en klass, låt oss säga att den heter main och ärver Page. I den klassen har jag en variabel som heter CnStr där anslutningssträngen till en databas finns.. Jag undrar hur jag ärver variabeln från klassen main till en annan klass (i detta fall klassen sub_main), som ärver UserControl?
I mitt fall så kan man tydligen inte heller använda Server-objektet i en klass som ärver UserControl. :(
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports System.Data
Imports System.Data.OleDb
Imports Microsoft.VisualBasic
Public Class default : Inherits Page
Dim CnStr As string = "Provider=Microsoft.Jet.OLEDB.4.0;data source=" & Server.MapPath("db_links.mdb")
Sub Page_Load()
'exempelvis en anslutning till en databas
End Sub
End Class
Public Class sub_main : Inherits UserControl
Sub Page_Load()
'här ska man kunna använda variabeln CnStr från klassen main, i en databasanslutning
End Sub
End Class
Problemen är alltså:
- jag vill använda en variabel över flera klasser
- Server-objektet kan inte användas i en klass som ärver UserControl
Jag tror du tänker fel när du vill lösa det med arv. Varför helt enkelt inte skicka in värdet av variabeln i instanser av sub_main via konstruktorn, en publik metod eller en property?
Server-objektet kan inte användas i en klass som ärver UserControl
Jo. Server-objektet finns tillgängligt som en statisk property i HTTPContext.Current. (Och även om det varit så illa att den inte gjort det så hade du kunnat skicka över en referens till det med metoden ovan.)
Tja, nu kan jag inte särskilt mycket om just UserControls eller ASP.NET så det är möjligt att det jag skrev om konstruktorer inte riktigt stämmer i det här fallet. Men du borde iaf kunna skicka in din connectionstring via en public property ungefär som på den här sidan: http://www.aspfree.com/print/1049,0/
Vad gäller server-objektet så är det väl mest en fråga om att använda det rakt av:
Dim VårNuvarandeMapp As String
VårNuvarandeMapp = HttpContext.Current.Server.MapPath(".")