2

我在我创建的模块中使用 MvcMailer 和 Orchard CMS,虽然我可以让它发送电子邮件,但电子邮件的正文是空的,让我相信 Orchard 没有接听“/[模块] /Views/[NameOfMailerFolder/_Layout.cshtml”或“.../[NameofMailerView].cshtml”。

起初我认为将“/ [Module] / Views / [NameOfMailerFolder]”移动到“/ [ThemeBeingUsed] / Views”文件夹或Orchard.Web的“/ Views”文件夹可能会起作用(我认为这只是找不到路径)。但没有运气。

我尝试在我的模块中使用 route.cs,但我不知道我是否可以将 CONTROLLER 和 ACTION 留空(“”)并将“/[Module]/Views/[NameOfMailerFolder]”放在那里只要。无论如何,我为“[NameOfMailerView].cshtml”创建了一条路线,但这也没有奏效。我想知道这是否是正确的方法(我没有在控制器中设置操作,但我正在考虑这样做 - 只需要重定向?)。

我有点迷茫,所以我很感激任何指导。

4

1 回答 1

3

事实证明,Mailer 代码使用了 MasterName,这似乎会导致 Orchard CMS 的处理方式出现问题。

这就是它为我工作的原因(使用 1.3 或 Orchard.Web):

public QuoteMailers()
    : base()
{
    //LEAVE OUT FOLLOWING FOR MVC MAILER TO WORK
    //MasterName = "_Layout";
}

QuoteMailers 只是我的名字,如果您在 VS 中使用 Package Manger 控制台,MvcMailer 将根据您使用的参数创建一个名称。

注释掉 MasterName 是有效的!这种“hack”的唯一缺点是我不使用通用的 _Layout 文件。对我来说这没什么大不了的,因为我能够使用 Partials。

于 2012-02-03T14:41:10.883 回答