web-dev-qa-db-de.com

Rasierer - HTML.RAW gibt keinen Text aus

Ich habe alle Lösungsvorschläge für andere, ähnliche Fragen ausprobiert, aber keine davon scheint zu funktionieren. Im Wesentlichen versuche ich, eine Tabelle mit Daten aus der Sammlung von Modellen anzuzeigen. Das ist an sich kein Problem, jedoch möchte ich den Rasierer zwingen, ihn immer in 3 Spalten zu erzeugen (egal wie viele Elemente wir haben). Meine ursprüngliche Idee war es so zu machen:

 <table class="projects-grid">
    <tr>
    @for(int i = 0; i< Model.Count(); i++) 
     {
         if (i != 0 && i % 3 == 0) 
         {
             Html.Raw("</tr><tr>");
         }
        var item = Model.ElementAt(i);
        <td class="project-tile"> 
            @Html.DisplayFor(modelItem => item.Title)                
        </td>        
    }
    </tr>    
</table>

Im Grunde würde jedes dritte Element, dass Razor eine Zeichenkette ausgeben soll, um eine weitere Zeile zur Tabelle hinzufügen. Alles scheint gut zu funktionieren, außer dieser Stich ist in der Seitenquelle nicht vorhanden. Im Debug kann ich diese Zeile sehen

 Html.Raw("</tr><tr>");

Wird zwar aufgerufen, aber es ist keine Ausgabe in der generierten Seite vorhanden. 

Irgendwelche Hilfe? Vielen Dank im Voraus ....

31
Palkos

Der Grund für die Ausgabe ist der Kontext der ausgeführten Rasierersyntax. In Ihrem if-Block wird der gesamte Code so ausgeführt, als wären Sie in einem regulären C # -Kontext und der Zeile:

Html.Raw("</tr><tr>");

Gibt eine MvcHtmlString zurück, aber Sie machen damit nichts. Sie müssen einen Ausgabekontext eingeben:

@Html.Raw("</tr><tr>");
65
Simon Belanger

Ich würde eine Arbeit machen.

Versuchen:

<table class="projects-grid">
    <tr>
    @for(int i = 0; i< Model.Count(); i++) 
     {
         if (i != 0 && i % 3 == 0) 
         {
             <text>
             @Html.Raw("</tr><tr>")
             </text>
         }
        var item = Model.ElementAt(i);
        <td class="project-tile"> 
            @Html.DisplayFor(modelItem => item.Title)                
        </td>        
    }
    </tr>    
</table>

Ich hoffe es hilft.

3
ysrb

Das Einschließen von Html.Raw mit @ (und) hat das Problem für mich gelöst. Obwohl es äußerliches @ {und} gab, musste es um jede Html.Raw-Anweisung noch @ (und) sein.

0
Isaac Levy

Html.Raw wird eigentlich für Zeilenumbrüche verwendet, wie Sie dies in c # mit/n tun

Zum Beispiel:

<text>
@html.raw("</tr><tr>")
</text>

Ich hoffe, es hilft.

0
saurav singh

Html.Raw

Schließt HTML-Markup in eine HtmlString-Instanz ein, sodass es als HTML-Markup ..__ interpretiert wird.

Regler

public actionresult Htmlraw()
{
    viewbag.message = "Hey friends lets go" + "<br />" + "for chillout";
    return view();
}

ausgabe

@html.raw(viewbag.message);
0
Rizwan Younas