在使用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(动态)使模型动态化! 或者尝试使用静态而不是匿名/动态类型。有关错误的更多详细信息: - 错误:(36,79)字符文字中的字符过多可以在(请删除文件夹)中找到编译的临时文件: C:\ Users \ Chegini.h \ AppData \ Local \ Temp \ RazorEngine_tfr2i1nu.3fl 我们试图编译的模板是: ------------- START ----------- @using Nop.Plugin.Misc.NchShamsiDate.Extensions; @using Nop.Web.Framework.ViewEngines.Razor;
@T( 'Account.Fields.DateOfBirth'):
如果可能,请告诉我!
答案 0 :(得分:1)
问题在于@T('Account.Fields.DateOfBirth')
,需要双引号 @T("Account.Fields.DateOfBirth")