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:
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.
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?
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?