2011-10-30 64 views
3

我試圖使用Postal從服務發送電子郵件(不在ASP.NET項目中)。我不斷收到異常以下消息:剃刀異常編譯模板

error CS0103: The name 'model' does not exist in the current context 

我下面從郵政維基教程:https://github.com/andrewdavey/postal/wiki/Postal-in-non-web-scenario

我的模板是這樣的:

@model Namespace1.AlertEmailViewModel 

From: [email protected] 
To: @Model.FirstName @Model.LastName <@Model.Email> 
Subject: Alert! @Model.ShortDescription 

(有問題的模型類確實存在。)

任何幫助,將不勝感激。謝謝!

+0

您使用的是當前版本的mvc/razor庫嗎? –

+0

@Marc Gravell我用NuGet來抓取Postal,所以我會假設我是RazorEngine NuGet包是最新的。 –

+0

值得檢查,但。最終,在頂部添加一個演員陣容可能同樣簡單:'var typedModel =(ModelType)Model;' –

回答

2

當你在一個非網絡方案採用郵政,引擎蓋下它使用我們的RazorEngine項目。目前,這意味着它正在利用目前在NuGet上推出的v2.1版本。

在v2.1中本地不支持@model語法,但即將發佈的v3版本包含此支持以及佈局,線程安全等其他好的功能(https://github.com/Antaris/RazorEngine)

0

我以前在使用早期版本的MVC創建的項目中遇到過這個問題。

要解決這個問題,如果我沒有記錯,這添加到您的App.config文件:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
      <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" /> 
      <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="3.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
</runtime> 
+1

這裏沒有web.config;這不是一個ASP.NET項目。 –

+0

那麼,您正在使用Razor模板引擎,這意味着您正在引用System.Web.Mvc程序集。把它放在你的App.config中,如果你不在一個web項目中。 –

+0

這沒有做任何事情。 –