我在我创建的模块中使用MvcMailer和Orchard CMS,虽然我可以让它发送电子邮件,但电子邮件的正文是空的,这让我相信Orchard没有拿起“/ [Module] / Views / [NameOfMailerFolder / _Layout.cshtml“或”... / [NameofMailerView] .cshtml“。
起初我认为将“/ [Module] / Views / [NameOfMailerFolder]”移动到“/ [ThemeBeingUsed] / Views”文件夹或Orchard.Web的“/ Views”文件夹中可能会起作用(我以为它只是没有找到路径)。但没有运气。
我尝试在我的模块中使用route.cs,但我不知道我是否可以将CONTROLLER和ACTION留空(“”)并放入“/ [Module] / Views / [NameOfMailerFolder] “只在那里。无论如何,我为“[NameOfMailerView] .cshtml”创建了一条路线,但这条路线也没有用。我想知道这是否是正确的方法(我没有在控制器中设置操作,但我想这样做 - 只是要重定向?)。
我有点失落,所以我很感激任何指导。
答案 0 :(得分: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 Console,MvcMailer将根据您使用的参数创建一个名称。
评论MasterName是有效的!这种“黑客”的唯一缺点是我不使用常见的_Layout文件。对我来说这没什么大不了的,因为我能够使用Partials。