【问题标题】:RazorEngine Dynamically Add in cshtmlRazorEngine 在 cshtml 中动态添加
【发布时间】:2017-10-06 07:27:57
【问题描述】:

我在 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: '错误同时 编译模板。请尝试以下方法来解决这种情况: * 如果问题是关于缺少/无效的引用或多个定义,请尝试加载 手动丢失的引用(在编译的应用程序域中!)或 通过提供您自己的 IReferenceResolver 实现来手动指定您的引用。 有关详细信息,请参阅https://antaris.github.io/RazorEngine/ReferenceResolver.html。 目前,所有参考资料都必须以文件形式提供! * 如果你得到'class'不包含'member'的定义: 尝试另一个模型类型(例如'null'使模型动态)。 注意:您不能使用 typeof(dynamic) 使模型动态化! 或者尝试使用静态而不是匿名/动态类型。有关错误的更多详细信息: - error: (36, 79) Too many characters in character literal 编译的临时文件可以在(请删除文件夹): C:\Users\Chegini.h\AppData\Local\Temp\RazorEngine_tfr2i1nu.3fl 我们尝试编译的模板是: ------------- 开始 ------------ @using Nop.Plugin.Misc.NchShamsiDate.Extensions; @使用 Nop.Web.Framework.ViewEngines.Razor;

@T('Account.Fields.DateOfBirth'):

如果可能,请给我建议!

【问题讨论】:

    标签: c# plugins nopcommerce razorengine onactionexecuted


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 2013-07-04
      • 2019-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多