2016-11-16 4 views
0

Vor ASP.NET Core konnte ich Razor Markup als Argument für eine Funktion übergeben. Es scheint jedoch nicht mehr zu funktionieren.Render ASP.NET Core Razor Markup von einem Argument

Zum Beispiel, auch diese einfachen Fällen nichts machen:

@{ 
    Func<object, HelperResult> markup1 = @<text>hello world</text>; 
    new HtmlString(markup1.Invoke(null).ToString()); 

    Func<object, HelperResult> markup2 = @<h1>hello world</h1>; 
    new HtmlString(markup2.Invoke(null).ToString()); 
} 

Was mache ich falsch?

+0

"es macht nichts" - so kompiliert/baut mindestens? – Dai

+0

@Dai Es kompiliert und läuft, keine Fehler. Aber dieses Markup wird nicht gerendert. – grokky

Antwort

2

Dies wird kein Ergebnis rendern, da Sie nichts mit dem Ergebnis tun.

@{ 
    Func<object, HelperResult> markup = @<text>hello world</text>; 
    new HtmlString(markup.Invoke(null).ToString()); 
} 

Im Ausdruck new HtmlString(markup.Invoke(null).ToString()); ein HTML-Ergebnis liefert die richtige ist jedoch so, wie Sie es fordern nicht korrekt funktionieren. Hier ist ein Ausschnitt, der das Ergebnis ausgibt.

@{ 

    Func<object, HelperResult> markup = @<text>hello world</text>; 
    var html = markup.Invoke(null); 
    await html.WriteAction(ViewContext.Writer); 
} 

finden Sie hier, bemerken wir die HTML-Variable explizit sagen (HtmlResult), wo zu schreiben. In diesem Fall möchten Sie auf die ViewContext.Writer schreiben, die eine ist.

Verwandte Themen