我可以在template.cshtml中使用RazorEngine吗?

时间:2016-06-23 08:37:40

标签: razor resources razorengine

这里我有一个带有文本字符串的资源文件,如下所示:

  

亲爱的@ Model.SupporterName,来自公司的@ Model.ConsumerName   @ Model.ConsumerCompany开放访问团队的下一个许可团队   工作

在我的View.cshtml上,我使用资源

中的字符串
<tr>
    <td class="free-text">
        @Resources.ActivatedBodyText
    </td>
</tr>

带有指定模型的RunCompile。

BUT!

当所有渲染的html文件看起来像:

Click

如何使用RazorEngine ????

从资源渲染字符串

1 个答案:

答案 0 :(得分:0)

以下对我有用:

<强>结果:

ParsedTextResult

控制器操作:

    public ActionResult Index()
    {
        string templateStr = Resources.ActivatedBodyText;
        Template product = new Template() { SupporterName = "Support1", ConsumerCompany = "Company1", ConsumerName = "Consumer1" };
        string pattern = @"\@Model\.(\w+)";
        Regex rgx = new Regex(pattern);
        MatchCollection matches = rgx.Matches(templateStr);
        foreach (Match match in matches)
        {
            string capture = match.Groups[1].Value;
            string propertyvalue = product.GetType().GetProperty(capture).GetValue(product).ToString();
            templateStr = templateStr.Replace(match.ToString(), propertyvalue);
        }
        ViewBag.templateStr = templateStr;
        return View();
    }

说明

  1. 找到&#34; @Model的所有实例。&#34;在资源字符串中,使用正则表达式
  2. 捕获属性名称
  3. 循环浏览每个匹配项并通过反射获取属性值
  4. 替换了匹配的&#34; @Model ...&#34;带有属性值的表达式
  5. 通过ViewBag将新模板字符串传递给视图