Avatar billede speedpete Nybegynder
14. februar 2005 - 07:48 Der er 3 kommentarer og
1 løsning

Hvordan får man en TextBox til at acceptere html-tags?

Hvordan får man en TextBox til at acceptere html-tags?

Jeg arbejder på et simpelt CMS-system, hvor man skal kunne indtaste – i dette tilfælde – en ferieplan. Jeg gemmer teksten i en database, og henter den derfra ind i et label på siden. Men for at teksten ikke skal stå i en lang køre uden linieskift, så vil jeg kunne indtaste <br>, <i>, <b> osv. Det er heller ikke noget problem at gemme den slags tekst i Access – problemet er at få det gennem en TextBox. Der kører åbenbart noget validering, for compilerne protesterer med:

System.Web.HttpRequestValidationException: Der blev konstateret en potentielt farlig værdi for Request.Form fra klienten (ferieBox="<br>")

hvis jeg prøver at indsætte html.

Koden følger her:

<%@ Page Language="C#" %>
<%@ import Namespace="System.Data" %>
<%@ import Namespace="System.Data.OleDb" %>
<script runat="server">

    void ferieopdater(Object obj, EventArgs e)
            {
                  string ferie = ferieBox.Text;
                  OleDbConnection forbindelsesObjekt = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Server.MapPath("Ferieplan.mdb"));
                  try
                  {
                    OleDbCommand  kommandoObjekt = new OleDbCommand();
                    kommandoObjekt.CommandText = "Update Ferie SET plan = '"+ferie+"' WHERE Id=1";
                    forbindelsesObjekt.Open();
                    kommandoObjekt.Connection = forbindelsesObjekt;
                    int result = kommandoObjekt.ExecuteNonQuery();
                    forbindelsesObjekt.Close();
   
                  }
                  catch(Exception u)
                  {
                    forbindelsesObjekt.Close();
                  }
          }

</script>
<html>
<head>
</head>
<body>
    <form runat="server">
        Indsæt ferieplanen her:<asp:TextBox id="ferieBox" runat="server" TextMode="MultiLine" Width="100%" Height="200px"></asp:TextBox>
        <asp:Button id="Button1" onclick="ferieopdater" runat="server" Text="Opdater Ferieplan"></asp:Button>
        <br />
    </form>
</body>
</html>
Avatar billede jepsen999 Nybegynder
14. februar 2005 - 08:38 #1
Indsæt
<%@ Page validateRequest="false"  %>
i toppen af siden, eller se http://asp.net/faq/RequestValidation.aspx#3
Avatar billede speedpete Nybegynder
14. februar 2005 - 09:52 #2
Mange tak, det ser ud til at løse det.

Et andet spørgsmål i forlængelse af http://asp.net/faq/RequestValidation.aspx#3:
Da jeg ikke ønsker at html-encode det indtastede, men netop ønsker at tillade <br> og deslige, så skal jeg jo kunne sortere <sript> fra. Kan man validere sig ud af det?
Avatar billede jepsen999 Nybegynder
14. februar 2005 - 17:06 #3
Jeg tror ikke der findes en enkelt løsning på det. Man kunne selvfølgelig nøjes med at htmlencode "<script>...</script>"-delen af en besked, men der findes sikkert andre måder at sabotere koden på.

Så jeg tror du enten skal:
1. satse på at den/de brugere der er logget ind ikke bruger <script> eller andre "grimme" tags.
2. lave en positiv-liste over tilladte tags og htmlencode alt andet.
Avatar billede speedpete Nybegynder
07. juli 2006 - 08:59 #4
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester