Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
[geklärt] html aus datenbank auf aspx ausgeben
thepixel
myCSharp.de - Member



Dabei seit:
Beiträge: 221
Herkunft: Bayern

Themenstarter:

[geklärt] html aus datenbank auf aspx ausgeben

beantworten | zitieren | melden

Der Titel sagts: In einer MSSQL DB ist Text mit HTML Code formatiert abgelegt. Diesen möchte ich ich eins zu eins auf einer aspx Seite ausgeben.

Gibt es dazu eine Lösung? (ausser enableEventValidation=false...)

grüße thepixel
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von thepixel am .
Mfg, Christian
private Nachricht | Beiträge des Benutzers
[email protected]
myCSharp.de - Member



Dabei seit:
Beiträge: 407

beantworten | zitieren | melden

Bin ich der einzige der sich fragt was das mit

"enableEventValidation=false" zu tun haben soll?


- Daten aus der Datenbank holen
- und mit "myDiv.innerHTML = datenvonirgendwoher"

auf der Seite ausgeben....
private Nachricht | Beiträge des Benutzers
Stipo
myCSharp.de - Member

Avatar #avatar-2966.gif


Dabei seit:
Beiträge: 704
Herkunft: Lörrach

beantworten | zitieren | melden

Wie wäre es mit dem Literal Steuerelement?

Dafür ist das wie geschaffen ;)

Grüße Stephan
private Nachricht | Beiträge des Benutzers
schaedld
myCSharp.de - Member

Avatar #avatar-2533.jpg


Dabei seit:
Beiträge: 1436
Herkunft: Schweiz

beantworten | zitieren | melden

Hol Dir den String doch mit AJAX und einer WebMethod aus der Datenbank. Wenn der Return Wert der WebMethod so oder so ein string ist, dann ist dort auch der ganze HTML string enthalten. Diesen kannst Du dann im OnSucceded function des Javascripts als innerHTML einem Div zuweisen (Vorteil, dann hättest Du keinen PostBack).

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="Thread.Number70561._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
    <title></title>
            <script type="text/javascript" language="javascript">
                function GetGeneratedHtml() {
                    PageMethods.GetHtmlString(onSucceded);
                }

                function onSucceded(result, usercontext, methodname) {
                    var div = document.getElementById('result');
                    div.innerHTML = result;
                }
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager" runat="server" EnablePageMethods="true">
    </asp:ScriptManager>
    <div id="result" style="background-color: #C0C0C0; border-style: solid; width: 100px; height: 100px" onclick="GetGeneratedHtml();">    
    </div>
    </form>
</body>
</html>

Hier noch die WebMethod. Diese wäre in Deinem Fall ein Zugriff auf die DB und dann den dort ausgelesenen String als Rückgabetyp.


        [WebMethod]
        public static string GetHtmlString() {
            return "<input type=\"button\" id=\"test_button\" value=\"Generierter Button\" />";
        }
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von schaedld am .
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Tut mir leid, aber den Tipp halte ich für den schlechtesten, den man geben kann, schaedld.

HTML per XmlHttpRequest zu übertragen, ist genau genommen nicht einmal AJAX und sollte vermieden werden. Zu übertragen sind die darzustellenden Daten, nicht die Darstellung selbst. Nur, weil es bequemer scheint, würde ich nicht aufhören, Daten und ihre Darstellung zu trennen.

LiteralControl war angesichts der Tatsache, dass da sowieso schon HTML in einer Datenbank steht (???) noch die beste Herangehensweise.

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
schaedld
myCSharp.de - Member

Avatar #avatar-2533.jpg


Dabei seit:
Beiträge: 1436
Herkunft: Schweiz

beantworten | zitieren | melden

Zitat von LaTino
Tut mir leid, aber den Tipp halte ich für den schlechtesten, den man geben kann, schaedld.
Ist Ansichtssache, aber ich denke dass Du so oder so bei jedem der einen Tipp gibt Deinen als besseren hinstellen wirst.
Zitat von LaTino
HTML per XmlHttpRequest zu übertragen, ist genau genommen nicht einmal AJAX und sollte vermieden werden. Zu übertragen sind die darzustellenden Daten, nicht die Darstellung selbst. Nur, weil es bequemer scheint, würde ich nicht aufhören, Daten und ihre Darstellung zu trennen.
Da geb ich Dir recht. Der Threadersteller hat aber ein konkretes Problem zu einen bestehenden Lösung und diese kann oder darf er eventuell aus kostengründen nicht ändern. Daher ist dieser Lösungsansatz nicht ganz verkehrt.
Zitat von LaTino
LiteralControl war angesichts der Tatsache, dass da sowieso schon HTML in einer Datenbank steht (???) noch die beste Herangehensweise.

LaTino
C'est le ton qui fait la musique, n'est-ce pas?
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Zitat von schaedld
Ist Ansichtssache, aber ich denke dass Du so oder so bei jedem der einen Tipp gibt Deinen als besseren hinstellen wirst.
Was soll das denn jetzt wieder? Meinem Post war doch deutlich zu entnehmen, dass ich einen Tipp bevorzugen würde, der nicht meiner ist (LiteralControl)...
Lies meinen Post (an den Threadersteller bitte so: "Benutz lieber LiteralControl und bitte beachte den "Ajax"-Tipp nicht, auch wenn er geeignet scheint, ist er es nicht."

Zitat
Daher ist dieser Lösungsansatz nicht ganz verkehrt.
Es geht darum, dass du propagierst, HTML über XmlHttpRequest zu transportieren. Und das ist tatsächlich ganz verkehrt.

LaTino
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von LaTino am .
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
schaedld
myCSharp.de - Member

Avatar #avatar-2533.jpg


Dabei seit:
Beiträge: 1436
Herkunft: Schweiz

beantworten | zitieren | melden

Zitat
Es geht darum, dass du propagierst, HTML über XmlHttpRequest zu transportieren. Und das ist tatsächlich ganz verkehrt.
1. Propagiere ich nicht
2. missionieren wie Du, tu ich gar nicht
3. Die Richtigkeit einer Lösung liegt immer im Auge des Betrachters
4. Frage ich mich wie alt Du bist, denn Dein Tonfall unterscheidet sich ein wenig von den anderen Usern (die PowerUser sind).
Grüsse
Daniel
Space Profile
Wer nicht fragt, der nicht gewinnt
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

f'up2p, um den Thread hier nicht zu vermüllen.
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
Golo Roden
myCSharp.de - Member

Avatar #avatar-2167.png


Dabei seit:
Beiträge: 4649
Herkunft: Riegel am Kaiserstuhl

beantworten | zitieren | melden

Ich sehe das eigentlich genauso wie LaTino - ein Literal-Control nehmen, an dessen Text-Property den HTML-Code zuweisen, und fertig.

Wozu man bei dieser Aufgabenstellung mit AJAX anfangen soll, ist mir ehrlich gesagt schleierhaft ... klar "geht" das, aber erstens war die durch AJAX erreicht Dynamik nirgends gefordert (wodurch die AJAX-Lösung das ganze verkompliziert), zweitens steht das X in "AJAX" für "XML" und nicht für "HTML", insofern sehe ich das wie LaTino als Zweckentfremdung von AJAX an.

@ schaedld: Ich weiß nicht, welches Problem Du mit LaTino (generell oder speziell in diesem Beitrag) hast, aber ehrlich gesagt ist nicht er es, der sich im Ton vergreift.
Wissensvermittler und Technologieberater
für .NET, Codequalität und agile Methoden

www.goloroden.de
www.des-eisbaeren-blog.de
private Nachricht | Beiträge des Benutzers
thepixel
myCSharp.de - Member



Dabei seit:
Beiträge: 221
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Zum Thema EnableEventValidation=true:

http://aspnetnova.blogspot.com/2009/04/pages-enableeventvalidationtrue-page.html

Leider erzeugt auch das Literal-Control den beschriebenen Fehler.

Oder ist:

<b>Text<b/><br>
Text text text text

kein valides HTML?
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von thepixel am .
Mfg, Christian
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Ah, jetzt sehe ich den Grund für die Validierungsabschaltung.
Ja, ergibt Sinn. Derselbe Fehler würde übrigens erscheinen, wenn man:

a) eine ListBox mit Inhalten füllt
b) auf dem Client Inhalte entfernt / hinzufügt
c) die ListBox per PostBack verschickt

Die Controls auf der Seite stimmen einfach nicht mehr mit dem überein, was der Code-Behind erwartet => Exception. Abhängig vom konkreten HTML, was in diesem Fall übertragen und dargestellt werden soll, kann der Fehler natürlich auch auftreten. Insofern ist eine Abschaltung der Validierung die pragmatische Lösung.

LaTino

Edit:
<br> ist kein valides XHTML. <br /> wäre schon besser.
Edit2: ich und meine Edits...: ich sehe momentan mit eingeschalteter Validierung nur die Möglichkeit, die in der DB festgehaltenen HTML-Controls nach dem zerren aus der DB auch richtig zu erzeugen. Wäre aber ein ziemlicher Aufwand.
Dieser Beitrag wurde 2 mal editiert, zum letzten Mal von LaTino am .
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
thepixel
myCSharp.de - Member



Dabei seit:
Beiträge: 221
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Leider kann man die Validierung nicht für einzelne Controls ausschalten, würde ungern auf einer kompletten Seite auf dieses Sicherheits-Feature verzichten. Wer weiss was der User für Unfug macht...
Mfg, Christian
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Hm, es geht nur darum, dass die Controls, von denen ASP.NET weiss, auch nach einem PostBack noch da sind.

Greift dein Code-Behind auf etwas zu, dass der User per Script entfernt hat, passiert auch nicht viel mehr, als dass eine Exception geworfen wird.

Mag sein, dass ich etwas übersehe, aber außer, dass beim Programmieren zusätzliche Sicherheit, was die Controls angeht, gewährleistet wird, sehe ich keinen wirklichen Vorteil an der Validierung.

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
thepixel
myCSharp.de - Member



Dabei seit:
Beiträge: 221
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Seht Ihr eine andere Möglichkeit, einen User HTML eingeben zu lassen, diesen wegzuschreiben und aber auch wieder auszugeben?
Mfg, Christian
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Bin etwas verwirrt. An sich sollten LiteralControls keinen derartigen Fehler werfen. Dafür solltest du allerdings schon zum Dokument passendes HTML hineinpusten (i.e., wenn das Dokument als XHTML deklariert ist, sollte auch XHTML in der DB stehen, ansonsten nimm halt 4.01 transitional o.ä.).

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
thepixel
myCSharp.de - Member



Dabei seit:
Beiträge: 221
Herkunft: Bayern

Themenstarter:

beantworten | zitieren | melden

Ich nehme mal an, UserControls (wo bei mir der Text in ein Literal geschrieben wird) übernehmen den Typ von der Page auf der sie eingebunden werden... aber leider klappt es nicht ohne eventvalidation auf false zu setzen.
Mfg, Christian
private Nachricht | Beiträge des Benutzers