RazorEngine动态添加cshtml

时间:2017-05-08 10:21:42

标签: c# plugins nopcommerce razorengine onactionexecuted

在使用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'):

如果可能,请告诉我!

1 个答案:

答案 0 :(得分:1)

问题在于@T('Account.Fields.DateOfBirth'),需要双引号 @T("Account.Fields.DateOfBirth")