2016-06-10 10 views
-2

Kann jemand mir sagen, warum dieses Stück Code in Firefox ohne Probleme funktioniert, aber in Chrom bekomme ich einenwarum diese @ Html.Raw() Arbeit in Firefox und Chrome nicht

System.StackOverflowException‘ in System.Web.dll aufgetreten.

<div id="tabs-1"> 
    @if (ViewBag.Raw != null) 
    { 
     @Html.Raw(ViewBag.Raw) 
    } 
</div> 

Ich erhalte Daten aus der Datenbank wie dieser

var querys = item.Database.SqlQuery<stuffID>("select Text from stuffFiles where [email protected]", new SqlParameter("@stuffID", id)); 

Ich nehme den Text i

foreach (var items in querys) 
{ 
    paths = items.Text; 
} 
ViewBag.Raw = paths; 

wie diese brauche ich verstehe nicht, warum es doesn Ich arbeite in Chrome.

+4

Was ist der Stack-Trace? Der Browser * wirklich * sollte keinen Unterschied im serverseitigen Code machen. Ich vermute sehr, dass etwas anderes falsch ist. – David

+0

Wenn ich einen Aufruf-Stack gemacht habe, heißt es: Die maximale Anzahl der von Visual Studio unterstützten Stack-Frames wurde überschritten. – user6295447

+1

Eine 'StackOverflowException' wird normalerweise durch eine unendliche Rekursion verursacht. Jedes Mal, wenn Sie etwas wie eine Variable erstellen, eine Methode aufrufen usw., fügen Sie dem Stapel (einem Speicherbereich) ein Element hinzu. Es hat eine endliche Grenze, und wenn Sie das treffen, Boom. In diesem Alter ist es jedoch praktisch unmöglich, dem Stack genügend Code hinzuzufügen, um dies zu verursachen, weshalb es im Allgemeinen das Ergebnis einer unendlichen Rekursion ist. Lang und kurz, es hat nichts mit dem Browser zu tun. Wenn es in Firefox funktioniert, muss Firefox Cache oder etwas ablaufen. –

Antwort

0

ich manged, um es mit diesem Stück Code zu erhalten arbeitet

@Html.Raw(HttpUtility.HtmlDecode(ViewBag.Raw)) 

Von dem, was ich verstehe @ Html.Raw nicht codierten HTML rendert so muss es zuerst decodiert werden.

0

Vielleicht macht Ihr Code, was es nicht tun soll.

Haben Sie die text von allen verketten bedeuten die items Sie erhalten von querys

Sie folgenden Code würde nur die letzte item Text berücksichtigen und alle vorherigen

foreach (var items in querys) 
{ 
    paths = items.Text; //try to replace this with the line below 
    //paths = paths + items.Text + "," ; 
} 
ViewBag.Raw = paths; 

ich überschrieben werden würde empfehlen, Html.Raw NICHT zu verwenden, außer wenn Sie wissen, was Sie tun. Man sollte verwenden HttpServerUtility.HtmlEncode statt

+0

Ich habe das versucht, aber nicht funktioniert. Die Verwendung von Html.Raw funktioniert in Firefox und sollte in Chrome funktionieren – user6295447

+0

Dies ist der Fehler, der auftritt. Symbol laden übersprungen. Symbol loading für optimiertes Modul System.Web.dll wurde übersprungen, da nur mein Code aktiviert ist. – user6295447

+0

Das ist kein Fehler. Das ist eine Warnung von Visual Studio, dass nicht alle Symbole für Debugging-Zwecke geladen werden können. Es beeinflusst nur Ihre Fähigkeit, während des Debugging in den Code zu gehen. Es ist kein tatsächlicher Fehler in Ihrer Anwendung. –

Verwandte Themen