---
title: "Validering W3C"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/97332-validering-w3c"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Daniel78"
published: "2004-02-14T22:17:59.000Z"
updated: "2004-02-15T10:07:05.000Z"
replies: 2
views: 249
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/97332-validering-w3c"
---

# Validering W3C

## #1 — Daniel78, 2004-02-14T22:17Z



Permalänk: https://www.webforum.nu/p/97332

## #2 — Web-Tor, 2004-02-15T08:47Z

Men det fina men ASP.NET är ju att du inte är bunden till ett språk.
Du kan ju använda det C#-exempel som finns här på wF även om dina andra sidor är i VB.

<http://www.webforum.nu/showthread.php?s=&forumid=191&threadid=77146>

Permalänk: https://www.webforum.nu/p/1278016

## #3 — Daniel78, 2004-02-15T10:07Z

Ok, men hur funkar det då, ska jag kompilera C# exemplet till en egen dll och importera den eller, och hur i så fall?

För övrigt så konverterade jag C# exemplet till VB genom en konverterare. Denna kod har jag sedan lagt i global.asax och det funkar bra, förutom att jag måste avmarkera *Buffer.BlockCopy(buffer, offset, data, 0, count)* eftersom detta ej verkar vara tillgängligt i VB?

Här är VB klassen

```
Public Class XHTMLStrictFilter
    Inherits Stream
    Private _sink As Stream
    Private _position As Long

    Private Shared _regForm As New Regex("<form .*name=.* .*>", RegexOptions.Compiled Or RegexOptions.IgnoreCase)
    Private Shared _regNameReplace As New Regex("name=[^ ]*", RegexOptions.Compiled Or RegexOptions.IgnoreCase)
    Private Shared _regViewState As New Regex("<input type=""hidden"" name=""__VIEWSTATE"" value="".*"" />", RegexOptions.Compiled Or RegexOptions.IgnoreCase)

    Private _formFix As Boolean
    Private _viewStateFix As Boolean

    Public Sub New(ByVal sink As Stream)
        _sink = sink
    End Sub 'New

    ' The following members of Stream must be overriden. 

    Public Overrides ReadOnly Property CanRead() As Boolean
        Get
            Return True
        End Get
    End Property

    Public Overrides ReadOnly Property CanSeek() As Boolean
        Get
            Return True
        End Get
    End Property

    Public Overrides ReadOnly Property CanWrite() As Boolean
        Get
            Return True
        End Get
    End Property

    Public Overrides ReadOnly Property Length() As Long
        Get
            Return 0
        End Get
    End Property

    Public Overrides Property Position() As Long
        Get
            Return _position
        End Get
        Set(ByVal Value As Long)
            _position = Value
        End Set
    End Property

    Public Overrides Function Seek(ByVal offset As Long, ByVal direction As System.IO.SeekOrigin) As Long
        Return _sink.Seek(offset, direction)
    End Function 'Seek

    Public Overrides Sub SetLength(ByVal length As Long)
        _sink.SetLength(length)
    End Sub 'SetLength

    Public Overrides Sub Close()
        _sink.Close()
    End Sub 'Close

    Public Overrides Sub Flush()
        _sink.Flush()
    End Sub 'Flush

    Public Overrides Function Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
        Return _sink.Read(buffer, offset, count)
    End Function 'Read

    ' The Write method actually does the filtering. 
    Public Overrides Sub Write(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer)
        Dim data() As Byte

        If Not _formFix Or Not _viewStateFix Then
            Dim htmlOutput As String = System.Text.UTF8Encoding.UTF8.GetString(buffer)
            Dim length As Integer = htmlOutput.Length
            If Not _formFix And _regForm.IsMatch(htmlOutput) Then
                Dim formMatch As String = _regForm.Match(htmlOutput).Value
                htmlOutput = Regex.Replace(htmlOutput, formMatch, _regNameReplace.Replace(formMatch, ""), RegexOptions.IgnoreCase)
                _formFix = True
            End If
            If Not _viewStateFix And _regViewState.IsMatch(htmlOutput) Then
                Dim viewStateMatch As String = _regViewState.Match(htmlOutput).Value
                htmlOutput = Regex.Replace(htmlOutput, viewStateMatch, "<div>" + viewStateMatch + "</div>", RegexOptions.IgnoreCase)
                _viewStateFix = True
            End If
            data = System.Text.UTF8Encoding.UTF8.GetBytes(htmlOutput)
            count -= length - htmlOutput.Length
        Else
            data = New Byte(count) {}
            'Buffer.BlockCopy(buffer, offset, data, 0, count)
        End If
        _sink.Write(data, 0, count)
    End Sub
End Class
```

Permalänk: https://www.webforum.nu/p/1278026

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/97332-validering-w3c
