XhtmlStrictFilter och autopostback

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Daniel78
    Medlem
    • 2001-01-24
    • 199

    #1

    XhtmlStrictFilter och autopostback

    Hej, har en fråga angående det XHTMLStrictFilter som finns här på webforum. När man använder det så slutar mina DropDowns med AutoPostBack att fungera. Någon som har ett workaround på detta, vill ogärna göra mig av med filtret men sidorna är obrukbara om det inte går att köra någon form av autopostback på mina DropDowns?
    Därför är datorn en kvinna - "Ingen utom dess skapare förstår sig på deras inre logik."
  • icaaq
    Medlem
    • 2000-10-01
    • 4910

    #2
    Vad får du för felmedelande?

    mv icaaq
    When I work I have lot's of fun. vi söker folk, www.icaaq.com, twitter

    mv icaaq

    Comment

    • Daniel78
      Medlem
      • 2001-01-24
      • 199

      #3
      Jag får inget felmeddelande utan det är bara det att DropDownen postar inte det valda värdet längre. Det är precis som att AutoPostBack inte fungerar längre när man använder filtret.

      Filtret tar ju b la bort Name attributet från Form taggen och jag vet inte om det är något sådant som orsakar detta. Men då borde ju de som ev använder detta filter ha reagerat tidigare, eller så är det inte så många som bryr sig om att validera sina sidor?

      MVH
      Daniel
      Last edited by Daniel78; 2004-02-17, 12:17.
      Därför är datorn en kvinna - "Ingen utom dess skapare förstår sig på deras inre logik."

      Comment

      • Daniel78
        Medlem
        • 2001-01-24
        • 199

        #4
        Är det ingen som validerar sina ASP.NET sidor mot W3C standarden på detta forum?

        MVH
        Daniel
        Därför är datorn en kvinna - "Ingen utom dess skapare förstår sig på deras inre logik."

        Comment

        • Gladh
          Medlem
          • 2001-05-06
          • 3024

          #5
          [citat]
          Jag får inget felmeddelande utan det är bara det att DropDownen postar inte det valda värdet längre. Det är precis som att AutoPostBack inte fungerar längre när man använder filtret
          [/citat]
          Jag läste någonstans att om man skapar egna servercontroller och vill få postbacken att funger så måste man ge kontrollen ett uniktnamn på Name-attribute.

          Om man tog bort Name-attributet så fungerade inte postback, så det stämmer ju bra med dina "erfarenheter".

          [citat]
          Är det ingen som validerar sina ASP.NET sidor mot W3C standarden på detta forum?
          [/citat]
          Inte jag!

          - Magnus
          Vad är värst? Att jag har fördomar om folk, eller att de hela tiden infriar dem?

          Comment

          • Daniel78
            Medlem
            • 2001-01-24
            • 199

            #6
            Jag får väl lägga ner mitt arbete med att få denna specifika sida, som använder en DropDown med AutoPostback, att bli validerad XHTML. Jag som ville vara duktig...

            MVH
            Daniel
            Därför är datorn en kvinna - "Ingen utom dess skapare förstår sig på deras inre logik."

            Comment

            • icaaq
              Medlem
              • 2000-10-01
              • 4910

              #7
              Jag gör det.... men jag använder inte autopostbacks.

              mv icaaq
              When I work I have lot's of fun. vi söker folk, www.icaaq.com, twitter

              mv icaaq

              Comment

              • icaaq
                Medlem
                • 2000-10-01
                • 4910

                #8
                jag har suttit och lekt lite med detta filter.
                OBESERVERA att detta filter kan innehålla buggar.
                [kod]
                /*
                * Written by Mark Pasternak, [email protected]
                * Feel free to modify
                */
                using System;
                using System.IO;
                using System.Text.RegularExpressions;

                namespace NineteenDecember
                {
                /// <summary>
                /// Response Filter that modifies the ASP.NET output so it can validate against the XHTML 1.1 Strict standard.
                /// Two things are modified:
                /// 1. The form name attribute is removed. Warning, this may break JavaScript code!
                /// 2. The viewstate is wrapped in a div element.
                /// </summary>
                public class XHTMLStrictFilter : Stream
                {
                private Stream _sink;
                private long _position;

                private static Regex _regForm = new Rege"<form .*name=.* .*>", RegexOptions.Compiled|RegexOptions.IgnoreCase);
                private static Regex _regNameReplace = new Rege"name=[^ ]*", RegexOptions.Compiled|RegexOptions.IgnoreCase);
                private static Regex _regViewState = new Rege"<input type=\"hidden\" name=\"__VIEWSTATE\" value=\".*\" />", RegexOptions.Compiled|RegexOptions.IgnoreCase);
                // Tillagd 2004-02-11. Tar bort alla border="0"
                private static Regex _regBorder = new Rege"border=[^ ]*", RegexOptions.Compiled|RegexOptions.IgnoreCase);
                // Tillagd 2004-03-03. Byter language="javascript" till type="text/javascript"
                private static Regex _regType = new Rege"language=\"javascript\"", RegexOptions.Compiled|RegexOptions.IgnoreCase);
                // Tillagd 2004-03-03. fixar namnet på formuläret.
                private static Regex _regForm1 = new Rege"document.Form1", RegexOptions.Compiled|RegexOptions.IgnoreCase);

                private bool _formFix;
                private bool _viewStateFix;
                private bool _borderFix;
                private bool _typeFix;
                private bool _form1Fix;

                public XHTMLStrictFilter(Stream sink)
                {
                _sink = sink;
                }

                // The following members of Stream must be overriden.
                public override bool CanRead
                {
                get { return true; }
                }

                public override bool CanSeek
                {
                get { return true; }
                }

                public override bool CanWrite
                {
                get { return true; }
                }

                public override long Length
                {
                get { return 0; }
                }

                public override long Position
                {
                get { return _position; }
                set { _position = value; }
                }

                public override long Seek(long offset, System.IO.SeekOrigin direction)
                {
                return _sink.Seek(offset, direction);
                }

                public override void SetLength(long length)
                {
                _sink.SetLength(length);
                }

                public override void Close()
                {
                _sink.Close();
                }

                public override void Flush()
                {
                _sink.Flush();
                }

                public override int Read(byte[] buffer, int offset, int count)
                {
                return _sink.Read(buffer, offset, count);
                }

                // The Write method actually does the filtering.
                public override void Write(byte[] buffer, int offset, int count)
                {
                byte[] data;

                if(!_formFix || !_viewStateFix || !_borderFix || !this._typeFix || !this._form1Fix)
                {
                //string htmlOutput = System.Text.UTF8Encoding.UTF8.GetString(buffer);
                string htmlOutput = System.Text.Encoding.GetEncoding("iso-8859-1").GetString(buffer);
                int length = htmlOutput.Length;
                if(!_formFix && _regForm.IsMatch(htmlOutput))
                {
                string formMatch=_regForm.Match(htmlOutput).Value;

                // *** Borttagen 03-06-17 ***
                // *** htmlOutput=Regex.Replace(htmlOutput, formMatch, _regNameReplace.Replace(formMatch, ""), RegexOptions.IgnoreCase);
                htmlOutput=Regex.Replace(htmlOutput, _regNameReplace.Match(formMatch).Value,"", RegexOptions.IgnoreCase);
                _formFix=true;
                }
                if(!_viewStateFix && _regViewState.IsMatch(htmlOutput))
                {
                string viewStateMatch=_regViewState.Match(htmlOutput).Value;
                htmlOutput=Regex.Replace(htmlOutput, "<input type=\"hidden\" name=\"__VIEWSTATE\" value=\".*\" />", "<div>"+viewStateMatch+"</div>", RegexOptions.IgnoreCase);
                _viewStateFix=true;
                }
                // Tillagd 2004-02-11. Tar bort alla border="0"
                if(!_borderFix && _regBorder.IsMatch(htmlOutput))
                {
                string formMatch=_regBorder.Match(htmlOutput).Value;
                htmlOutput=Regex.Replace(htmlOutput, _regBorder.Match(formMatch).Value,"", RegexOptions.IgnoreCase);
                _borderFix=true;
                }
                if(!this._typeFix && _regType.IsMatch(htmlOutput))
                {
                string formMatch=_regType.Match(htmlOutput).Value;
                htmlOutput=Regex.Replace(htmlOutput, _regType.Match(formMatch).Value,"type=\"text/javascript\"", RegexOptions.IgnoreCase);
                this._typeFix=true;
                }
                if(!this._form1Fix && _regForm1.IsMatch(htmlOutput))
                {
                string formMatch=_regForm1.Match(htmlOutput).Value;
                htmlOutput=Regex.Replace(htmlOutput, _regForm1.Match(formMatch).Value,"document.forms[0]", RegexOptions.IgnoreCase);
                this._form1Fix=true;
                }
                //data = System.Text.UTF8Encoding.UTF8.GetBytes(htmlOutput);
                data = System.Text.Encoding.GetEncoding("iso-8859-1").GetBytes(htmlOutput);
                count -= length - htmlOutput.Length;
                }
                else
                {
                data = new byte[count];
                Buffer.BlockCopy(buffer, offset, data, 0, count);
                }
                _sink.Write(data, 0, count);
                }
                }
                }
                [/kod]
                Det jag har gjort är att jag bytt ut language="javascript" till Type. Sen har jag fixat autopostbakcksen (tror jag).

                Någon kan väl testa

                mv icaaq
                When I work I have lot's of fun. vi söker folk, www.icaaq.com, twitter

                mv icaaq

                Comment

                • Daniel78
                  Medlem
                  • 2001-01-24
                  • 199

                  #9
                  Jag har kört med din uppdaterade kod nu och AutoPostBack fungerar nu på en av mina DropDown's som jag testat på! Tack för denna!
                  Därför är datorn en kvinna - "Ingen utom dess skapare förstår sig på deras inre logik."

                  Comment

                  • asmodie
                    Medlem
                    • 2004-01-26
                    • 730

                    #10
                    Fattar inte varför man vill validera...
                    Så länge det funkar i de vanligaste webläsarna så spelar det faktiskt ingen som helst roll...
                    Beeing evil as usual...

                    Comment

                    • Web-Tor
                      Medlem
                      Smurf
                      • 2000-11-03
                      • 11794

                      #11
                      Det spelar en väldig roll.

                      • Du vet inte hur framtidens webbläsare ser ut.
                      • Du kan inte kontrollera sidan i alla webbläsare.
                      • Förhoppningsvis har kunden krav på att sidan ska följa en viss standard.
                      • Det är dessutom ett bra sätt att visa att man kan HTML.

                      Om du låter en byggfirma bygga ett hus åt dig och det är snett och skevt och taket är dåligt fastspikat; nöjer du dig då med att byggaren säger:
                      -"Men det går ju att bo här?"
                      Bygget måste väl även följa gällande byggregler?
                      /Tor
                      Jag och mina bilder.

                      Comment

                      • Pace
                        Medlem
                        • 2001-06-25
                        • 5947

                        #12
                        [citat=Web-Tor]Om du låter en byggfirma bygga ett hus åt dig och det är snett och skevt och taket är dåligt fastspikat; nöjer du dig då med att byggaren säger:
                        -"Men det går ju att bo här?"
                        Bygget måste väl även följa gällande byggregler?
                        [/citat]

                        Håller med till punkt och pricka, men en liten parentes i ämnet är att byggfirman inte autogenererar fönster och dörrar som en webbserverkontroll gör.
                        Take your god and shove him

                        Comment

                        • asmodie
                          Medlem
                          • 2004-01-26
                          • 730

                          #13
                          Nej jag håller inte riktigt med.
                          Ja självklart ska byggkillarna bygga efter en viss standard. Men standarden bygger jue inte på ett par färdiga regler som valideringen gör. Utan den ska klara av vissa saker. Hur man löser det är en annan fråga.

                          Menar så länge huset är isolerat, rören inte läcker och elen är dragen på rätt sätt har du ett fungerande hus.

                          Men men...jag tycker fortfarande att validering är lite att ta i.

                          Nej man kan inte testa det i alla webbläsare som finns. Men man kan med enkla medel täcka upp ca 99%.

                          En sak vi kan vara rätt så säkra på är att framtidens webbläsare kommer att vara bakåtkompatibla.

                          Om kunden ska ha ett krav så ska det vara att den funkar för de stora webbläsarna. Inte att den följer en standard. För standarden funkar inte heller fullt ut på alla webbläsare idag.
                          Beeing evil as usual...

                          Comment

                          • Web-Tor
                            Medlem
                            Smurf
                            • 2000-11-03
                            • 11794

                            #14
                            [citat]En sak vi kan vara rätt så säkra på är att framtidens webbläsare kommer att vara bakåtkompatibla.[/citat]Ja, de ska klara av äldre HTML-standarder.
                            Netscape 6 stöder inte allt som Netscape 4 gjorde. Däremot stödjer Netscape 6 HTML-standarden.

                            [citat]Men standarden bygger jue inte på ett par färdiga regler som valideringen gör. Utan den ska klara av vissa saker. Hur man löser det är en annan fråga.[/citat]På samma sätt talar inte HTML-standarden om hur din webbsida ska se ut, inte heller hur du ska lösa det. Däremot talar den om vad som är tillåtet och vad som inte är tillåtet.
                            När webbsidan är klar ska den valideras. Innan du får flytta in i huset ska det besiktigas.

                            [citat]Om kunden ska ha ett krav så ska det vara att den funkar för de stora webbläsarna.[/citat]Men det är ju inte webbutvecklaren som bestämmer vad kunden har för krav. Det finns EU-direktiv som säger att myndigheter och liknande ska uppfylla vissa WAI-krav. Där ingår bland annat att koden ska följa HTML-standarden.

                            [citat]För standarden funkar inte heller fullt ut på alla webbläsare idag.[/citat]Självklar ska man även testa sidan i de webbläsare som majoriteten av målgruppen använder.
                            /Tor
                            Jag och mina bilder.

                            Comment

                            • asmodie
                              Medlem
                              • 2004-01-26
                              • 730

                              #15
                              Oki...
                              Ska hoppas få myndighet som kund då
                              Beeing evil as usual...

                              Comment

                              Working...