我在 nopcommerce 中创建插件时使用 RazorEngine 时遇到问题。
我在 OnActionExecuted 中的源代码是:
public override void OnActionExecuted(ActionExecutedContext filterContext)
{
var m = filterContext.Result as ViewResultBase;
string newTag = @"@using Nop.Plugin.Misc.Helper.Extensions; @using Nop.Web.Framework.ViewEngines.Razor;
<div class='inputs date-of-birth'/ <label>@T('Account.Fields.DateOfBirth'):</label></div>";
var res = "Hello World";
if (m != null)
{
var model = m.Model as RegisterModel;
var service = Engine.Razor;
service.AddTemplate("templateRegister", newTag);
service.Compile("templateRegister");
res = service.Run("templateRegister", null, model);
filterContext.HttpContext.Response.Write(res);
}
}
但是在编译和运行时,我遇到了这个错误:
RazorEngine.Templating.TemplateCompilationException: '编译模板时出错。请尝试以下方法来解决这种情况: * 如果问题与缺少/无效引用或多个定义有关,请尝试手动加载缺少的引用(在编译的 appdomain 中!)或通过提供您自己的 IReferenceResolver 实现来手动指定您的引用。请参阅https://antaris.github.io/RazorEngine/ReferenceResolver.html详情。目前,所有参考资料都必须以文件形式提供!* 如果你得到'class'不包含'member'的定义:尝试另一个modelType(例如'null'使模型动态)。注意:您不能使用 typeof(dynamic) 使模型动态化!或者尝试使用静态而不是匿名/动态类型。有关错误的更多详细信息: - error: (36, 79) Too many characters in character literal 编译的临时文件位于(请删除文件夹):C:\Users\Chegini.h\AppData\Local\Temp \RazorEngine_tfr2i1nu.3fl 我们尝试编译的模板是: ------------- START ----------- @using Nop.Plugin.Misc.NchShamsiDate.Extensions; @使用 Nop.Web.Framework.ViewEngines.Razor;
@T('Account.Fields.DateOfBirth'):
如果可能的话,请给我建议!