[VB.Net] Checkbox i.c.m. Control Adapters

Pagina: 1
Acties:
  • 400 views sinds 30-01-2008
  • Reageer

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Hallo,

Bij het toevoegen van een (css) class aan een checkbox in onze vb.net omgeving bouwt .net in de uiteindelijke HTML een fijne span met de meegegeven classe om de checkbox:

HTML:
1
2
3
<span class="test">
  <input type="checkbox"/>
</span>


Dit is in onze webapp een probleem en nou proberen we met behulp van een control adapter de rendering aan te passen. De span te verwijderen en de class op het input element zelf te zetten. Nou is dit ons gelukt bij meerdere elementen maar op een of andere manier heeft de checkbox er weinig trek in.

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
Imports Microsoft.VisualBasic
Imports System.IO
Imports System.Text.RegularExpressions

Namespace SemanticAdapters

    Public Class CheckBoxAdapter

        Inherits System.Web.UI.WebControls.Adapters.WebControlAdapter

        Protected Overrides Sub RenderBeginTag(ByVal writer As System.Web.UI.HtmlTextWriter)
            Dim _checkBox As CheckBox = Me.Control

            Dim _stringWriter As StringWriter = New StringWriter
            Dim _htmlWriter As HtmlTextWriter = New HtmlTextWriter(_stringWriter)
            Dim origTag, newTag As String

            'Flush the html
            MyBase.RenderBeginTag(_htmlWriter)
            _htmlWriter.Flush()
            _htmlWriter.Close()

            'Read the html and remove the inline style
            origTag = _stringWriter.ToString
            newTag = Regex.Replace(origTag, "<input", "<input test ", RegexOptions.IgnoreCase)

            writer.Write(newTag)
        End Sub

        Protected Overrides Sub RenderContents(ByVal writer As HtmlTextWriter)

        End Sub

        Protected Overrides Sub RenderEndTag(ByVal writer As System.Web.UI.HtmlTextWriter)

        End Sub


    End Class

End Namespace


De originele tag die we binnen krijgen op regel 24 is elke keer alleen het <input/> element zonder zijn attributes. Waarom werkt deze zelfde opzet wel bij een image (verwijderen inline style met regular expression) en bij een input type=submit (deze wordt omgezet naar een <button>text</button>). Wij zien het probleem niet. Bij de render contents functie en de render end tag functie wordt ook niets extras meegegeven.

Heeft iemand een idee wat hier mis gaat?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Visual Basic .NET:
1
newTag = Regex.Replace(origTag, "<input", "<input test ", RegexOptions.IgnoreCase) 


Je wou toch een CLASS zetten, niet? ;) ( "<input test" )

[ Voor 7% gewijzigd door RobIII op 21-05-2007 16:03 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Dat klopt alleen ik krijg dus al niet de originele data binnen dus dat stukje is eigelijk meer rommel code nog... Dat werkt ook wel.. alleen dan heb ik daarna dus een <input test=""/> element.. :)

Het probleem is dat de variabele origTag gewoon niet eens het origineel bevat op het moment dat ik wil gaan regexen.

  • tec
  • Registratie: Juni 2001
  • Laatst online: 17-12-2024
Allright.. het is al opgelost, ipv een asp:checkbox gewoon een html input gebruiken met runat server.