【问题标题】:Razor exception compiling templateRazor 异常编译模板
【发布时间】:2011-10-30 18:21:45
【问题描述】:

我正在尝试使用 Postal 从服务(不在 ASP.NET 项目中)发送电子邮件。我不断收到以下消息的异常:

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

我正在关注 Postal wiki 中的教程:https://github.com/andrewdavey/postal/wiki/Postal-in-non-web-scenario

我的模板看起来像:

@model Namespace1.AlertEmailViewModel

From: support@example.com
To: @Model.FirstName @Model.LastName <@Model.Email>
Subject: Alert! @Model.ShortDescription

(有问题的模型类确实存在。)

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 您使用的是当前版本的 mvc/razor 库吗?
  • @Marc Gravell 我使用 NuGet 抓取 Postal,所以如果 RazorEngine NuGet 包是最新的,我会假设我是最新的。
  • 值得一试。最终,在顶部添加演员表可能同样简单:var typedModel = (ModelType) Model;
  • @Marc Gravel RazorEngine 位于 2.1.4039.23635。有更新的吗?

标签: c# templates razor postal


【解决方案1】:

当您在非 Web 场景中使用 Postal 时,实际上它使用的是我们的 RazorEngine 项目。目前,这意味着它正在使用当前在 NuGet 上推送的 v2.1 版本。

@model 语法在 v2.1 中不受原生支持,但即将发布的 v3 版本包括此支持,以及布局、线程安全等其他好东西。(https://github.com/ Antaris/RazorEngine)

【讨论】:

    【解决方案2】:

    过去,对于使用早期版本的 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>
    

    【讨论】:

    • 这里没有web.config;这不是 ASP.NET 项目。
    • 嗯,您正在使用 Razor 模板引擎,这意味着您正在引用 System.Web.Mvc 程序集。如果您不在 Web 项目中,请将其放在您的 App.config 中..
    猜你喜欢
    • 2021-10-05
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    • 2013-05-20
    相关资源
    最近更新 更多