Ok, ich habe diese funktioniert, aber ich bin mir nicht sicher, wie viel von einem schrecklichen Hack das ist. Kann mir jemand sagen, ob das, was ich getan habe, in Ordnung ist oder nicht, und warum?Rasiermesser Vorlage Javascript Zeichenfolge
Ich musste eine Vorlage zwischen meinem Razor und JavaScript teilen, damit man sie serverseitig und die andere clientseitige verwenden konnte. So, hier ist das, was ich getan habe:
Func<dynamic, HelperResult> sampleTemplate =
@<span>Sample markup @item.Something</span>;
Dann habe ich meine Vorlage in meiner Ansicht wie folgt aus:
for(int idxSample = 0; idxSample < Model.Number; idxSample++) {
@sampleTemplate(new { Something = "" })
}
Und für die Javascript habe ich dies:
<script type="text/javascript">
var someJsTemplate = "" +
<r><[!CDATA[@sampleTemplate(new { Something = "" })]]></r>;
</script>
So Ich könnte später someJsTemplate
anhängen, wann immer ich es brauchte. Also, was ist das Urteil? Sieht jemand einen besseren Weg, es zu tun? Oder ist das in Ordnung?
Edit:
Jetzt kann ich das nicht verwenden. Obwohl es in FireFox funktioniert, lässt Chrome meinen Hack nicht zu. Irgendeine Hilfe?
Über das Speichern von HTML in Server-Seite, naja ... es ist eine Razor-Ansicht, oder? Also, es ist serverseitig und es enthält HTML. Aber über den JavaScriptStringEncode, vielen Dank für den Tipp! Was passiert ist, ich habe gerade einen Helfer geschrieben, der praktisch praktisch das tut, was JavaScriptStringEncode tut. Könnte mir etwas Zeit erspart haben, wenn ich gewusst hätte ... Wie auch immer, tank dich! – rdumont
@rdumont, yeah 'JavaScriptStringEncode' ist nützlich und schützt dich vor den bösen Jungs, die bereit sind, deine Site zu besuchen :-) –