2016-11-16 67 views
0

在ASP.NET Core之前,我可以將Razor標記作爲參數傳遞給某個函數。但是,它似乎沒有工作了。從參數渲染ASP.NET Core Razor標記

例如,即使這些簡單的情況下呈現什麼:

@{ 
    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()); 
} 

我在做什麼錯?

+0

「它不渲染任何東西」 - 所以它至少編譯/構建? – Dai

+0

@Dai它編譯並運行,沒有錯誤。但是這個標記沒有呈現。 – grokky

回答

2

這不會渲染任何結果,因爲你沒有對結果做任何事情。

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

new HtmlString(markup.Invoke(null).ToString());返回一個HTML結果是正確的但您呼叫將無法正常工作的方式表達。這是一個將打印結果的片段。

@{ 

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

你會發現這裏我們明確地告訴HTML變量(HtmlResult),其中寫入。在這種情況下,您需要寫入ViewContext.Writer,這是一個System.IO.TextWriter