2017-06-14 26 views
0

我在運行時文本模板運行文本模板 - 奇怪的錯誤

<#= Power(); #> 

這應該叫這是在該模板在定義同一個類中定義的函數的代碼。

public partial class GallerySpecsTemplate 
{ 
    // private fields, constructor removed 

    private string Power() 
    { 
     string line; 
     // line gets calculated 
     return line; 
    } 
} 

我100%確定它是正確的類,因爲模板的其他部分使用該類的私有變量。

爲什麼我得到4個編譯錯誤以及如何解決它們?

Error 1 ) expected      
Error 2 Invalid expression term ')'  
Error 3 ; expected      
Error 4 Invalid expression term ')' 

當我刪除該行時,所有4個錯誤消失。

如果我將部分類定義中的方法Power從模板的末尾移除爲類特徵控制塊,則會出現相同的錯誤。

+0

沒有區別,錯誤相同 –

回答

2

<#= expr #>語法要求內部爲expression,而不是statement,這是因爲它編譯爲output.Write(expr);

...所以如果你把<#= SomeFunction(); #>那麼它將被編譯爲output.Write(SomeFunction(););這是一個明顯的語法錯誤。

只需刪除;,它會工作。簡單地說:分號就是將C#expression轉換成C#statement

它在ASPX語法中是一樣的,其中<%= expr %>只接受表達式,而不是語句(它編譯爲Response.Write(expr);)。

+0

酷!非常簡潔的答案! –

+0

謝謝,這已經解決了這個問題。我不知道該去哪裏,我得到的4個錯誤都是非常具有誤導性的。 –