【问题标题】:Validate Razor template验证 Razor 模板
【发布时间】:2016-07-04 17:52:46
【问题描述】:

如何验证用于呈现邮件模板的 Razor 模板。

string template = @"
My template 
@if (Model.Condition { <span>is true</spaM> }"

我犯了两个错误:缺少右括号和错误的结束标记。 我需要验证它并知道我应该修复什么(最好知道在哪一行)。我想使用原生 Razor 方法。

【问题讨论】:

  • 为什么要将其存储为字符串?存储为模板和precompile it

标签: c# .net asp.net-mvc razor template-engine


【解决方案1】:

如果我理解正确,您希望收到通知,您在模板中编写的代码是无效的 HTML。

如果是这样,恐怕没有简单的方法。模板纯粹是生成您指定用于响应的文本。

它甚至可能不是 HTML - 可能是 JavaScript 或许多其他输出 - 它只是一个文本字符串。

您可能有一个生成表格开头的模板,另一个生成正文的模板,以及另一个生成页脚和结束表格标签的模板。它们中的每一个都会自己生成无效的 HTML,但一个接一个地输出会生成一个有效的 HTML 表。 (那里有很多产品 - 抱歉)。

导致它无效的是 HTML 的解析器 - 即浏览器。只有当模板输出位于可以解析的完整文档中时,您才能验证模板输出。

【讨论】:

  • Razor 模板必须在 Razor / C# 方面有效。 OP 显示的缺少的右括号是 Razor 语法的一部分,而不是模板的一部分。
  • @gserg,你是对的。这就是为什么我要问到底需要什么——在 DisplayTemplate 中输入以上内容无论如何都会显示语法错误。缺少的括号和不正确的结束跨度标记会在键入时标记,但仍会编译...仍然不确定为什么需要通知通知和行号。
【解决方案2】:

你是说?

@{
    string template = Model.Condition ? "My template <span>is true</span>" : "";
}

【讨论】:

    【解决方案3】:
    string MyString = string.empty;
    @if(Model.Condition)
    {
    MyString ="<span>"+ "is true"+"</span>";
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-05-26
      • 1970-01-01
      • 2015-02-14
      • 2018-06-10
      • 1970-01-01
      • 1970-01-01
      • 2015-10-23
      • 1970-01-01
      相关资源
      最近更新 更多