Protected Overrides Sub OnInit(ByVal e As EventArgs)
Dim [b]bc[/b] As HttpBrowserCapabilities = Request.Browser
If [b]bc.Browser.Trim[/b] = "IE" Then
'Ditt
Else
'Datt
End If
End Sub
men...
När jag vill göra så här:
Private [b]bc[/b] As HttpBrowserCapabilities
...
Public Property ImageAlign() As String
Get
Return strImageAlign
End Get
Set(ByVal value As String)
If [b][red]bc.Browser.Trim[/red][/b] = "IE" Then
strImageAlign = " float:" & value & ";"
Else
strImageAlign = " align=""" & value & """"
End If
End Set
End Property
...
Protected Overrides Sub OnInit(ByVal e As EventArgs)
[b]bc[/b] = Request.Browser
If [b]bc.Browser.Trim[/b] = "IE" Then
'Ditt
Else
'Datt
End If
End Sub
Så får jag nullReference...något på rödad fet text. Vad felar?
Ok, man måste sätta det som du säger i varje property, fast det verkar vara lite jobbigt. Borde det inte gå att sätta det "globalt"?
Public WriteOnly Property style() As String
Set(ByVal value As String)
bc = Request.Browser
If bc.Browser.Trim = "IE" Then
'ie
Else
'annan
End If
End Set
End Property
Public WriteOnly Property width() As String
Set(ByVal value As String)
bc = Request.Browser
If bc.Browser.Trim = "IE" Then
'ie
Else
'annan
End If
End Set
End Property
Public WriteOnly Property height() As String
Set(ByVal value As String)
bc = Request.Browser
If bc.Browser.Trim = "IE" Then
'ie
Else
'annan
End If
End Set
End Property
'OSV.....
Det blir ju på en del ställen den måste fyllas/sättas...
Det måste ju finnas ett sätt för att slippa köra en request varje gång istället för att skapa en variabel....kan man tycka.
Det är ju inte så troligt att klienten byter browser åtta gånger medans sidan renderas. :)
Ok, man måste sätta det som du säger i varje property, fast det verkar vara lite jobbigt. Borde det inte gå att sätta det "globalt"?
...
Det måste ju finnas ett sätt för att slippa köra en request varje gång istället för att skapa en variabel....kan man tycka.
Mer globalt än Request blir det inte, och det är ingen overhead att kolla via Request.Browser varje gång. Din kod borde dock fungera, förutsatt att Init körs innan du försöker komma åt ImageAlign. Ett vanligt mönster för att komma runt detta är att skapa en mellan-property.
Private bc As HttpBrowserCapabilities
...
Public Property ImageAlign() As String
Get
Return strImageAlign
End Get
Set(ByVal value As String)
If Me.Browser.Browser.Trim = "IE" Then
strImageAlign = " float:" & value & ";"
Else
strImageAlign = " align=""" & value & """"
End If
End Set
End Property
Private ReadOnly Property Browser As HttpBrowserCapabilities
Get
If bc is Nothing then bc=Request.Browser
Return bc
End Get
End Property
Men, som sagt, det är helt onödigt eftersom Request.Browser redan finns tillgänglig och fungerar likadant.