【问题标题】:Using RazorEngine to create plain text templates使用 RazorEngine 创建纯文本模板
【发布时间】:2018-06-28 15:27:43
【问题描述】:

在剃刀表达式与纯文本混合的情况下,空格(尤其是换行符)存在很多问题。对付他们是相当困难的。

例如-不幸的是,整个句子会被换行符分割:

@if(something)
{
@This is some text
}
and this rest of this text

另一个例子 - 我使用了一些自定义助手来有条件地渲染文本。但是当条件不满足时,会呈现空行。

@Html.IfNotNull("Some text 1",@Model.prop1)
@Html.IfNotNull("Some text 2",@Model.prop2)  //false
@Html.IfNotNull("Some text 3",@Model.prop3)

呈现给:

Some text 1

Some text 3

但我需要:

Some text 1
Some text 3

有什么建议吗?也许有更适合我的模板引擎?

【问题讨论】:

    标签: razor razorengine


    【解决方案1】:

    Razor 会按字面意思解释您的空格,因此您始终可以将它们写在同一行:

    @if (true) { <text>This is some text</text> }and this rest of this text
    
    @Html.IfNotNull("Some text 1",@Model.prop1) @Html.IfNotNull("Some text 2",@Model.prop2) @Html.IfNotNull("Some text 3",@Model.prop3)
    

    输出:

    This is some text and this rest of this text
    
    Some text 1  Some text 3
    

    【讨论】:

    • 是的,你是对的。但是模板有很多 IF,有时是嵌套的,这种解决方案使它们更难阅读。
    • 帮助器中使用的文本块很长,会产生很长的行
    • 你应该考虑你的方法。也许有更好的方法来设计视图?
    • 根据经验,我可以告诉你,每当我开始注意到事情变得越来越复杂的模式时,这通常意味着我需要退后一步,考虑我做事的方式。例如,在这种情况下,在我看来,限制你的不是技术,而是你使用它的方式。
    猜你喜欢
    • 1970-01-01
    • 2020-05-08
    • 2015-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-20
    相关资源
    最近更新 更多