我正在尝试将一些现有的代码从MVC5迁移到MVC6,并且在使用此特定代码时遇到了困难:

 Engine.Razor.RunCompile(File.ReadAllText(emailTemplatePath), "emailTemplateKey", typeof (EmailViewModel), emailViewModel);

我收到以下运行时错误:
MissingMethodException: Method not found: "Void Microsoft.AspNet.Razor.CodeGenerators.GeneratedClassContext.set_ResolveUrlMethodName(System.String)". in RazorEngine.Compilation.CompilerServiceBase.CreateHost(Type templateType, Type modelType, String className)

我在MVC5中使用的原始代码来自here。如果无法将上面的代码转换为可与MVC6一起使用,那么做电子邮件模板的另一种优雅方法是什么?

最佳答案

显然 GeneratedClassContext 类发生了变化-属性ResolveUrlMethodName不再存在,因此MissingMethodException。看起来 ParserContext 类也已更改,因为访问OnError事件处理程序会引发相同的异常。

实际上,这是缺少属性的设置者(请原谅表达式!),它是一种方法,会导致异常。绝对准确,但有些误导,除非您记得。

这里有一个类似的问题(也是一个很好的答案,还有其他解决方案!):RazorEngine and MVC 6 beta 7

关于asp.net-mvc - Razor Engine无法在ASP.net 5 MVC 6中运行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35031593/

10-14 16:43
查看更多