2011-10-12 28 views
1

我從後獲得PARAMS名單,並且創造IDictionaryObj我在其中存儲此。在調試模式中,我可以看到所有傳入的鍵/值,它們顯示爲此expando對象的屬性。但是,當我將該對象傳遞給RazorEngine的解析方法時,它會抱怨提供的任何屬性都不存在。我在這裏做錯了什麼?與RazorEngine使用Expando的對象會引發錯誤

 dynamic expando = new ExpandoObject(); 

     var templateModel = expando as IDictionary<String, object>; 

     templateModel["To"] = email.To; 
     templateModel["From"] = email.From; 
     templateModel["Message"] = email.Body; 

     var templateData = HttpUtility.ParseQueryString(extraParams); 

     foreach (var property in templateData.AllKeys) 
     { 
      templateModel[property] = templateData[property]; 
     } 

     var mailBody = Razor.Parse(template, templateModel.ToExpando()); 

最後一行拋出以下錯誤:

「System.Dynamic.ExpandoObject」不包含一個定義爲「從」

+0

什麼'ToExpando()'? – SLaks

回答

0

猜測,你的代碼是良好的.ToExpando(),你可能缺少Linq:

using System.Linq; 
+0

如果這是這個問題,它甚至不會編譯。 –

+0

您可能需要研究擴展方法及其在應用程序其他領域的使用要求。另外,你應該發佈更多的代碼。 –

0

您還沒有顯示變量模板。

當RazorEngine使用ExpandoObject你需要確保你的模板沒有@model即使@model點ExpandoObject或者你會得到這個例外。

如果你在你的模板已經@model你需要將其刪除。