如何使用条件剃刀模板 C#

How to work conditional razor template c#

我正在尝试此代码,但在 运行 时出错。我想如果 IsUPS 具有真值,那么新的 table 行和 table 数据将添加到 table 如果 IsUPS 为假,则 table 将有一个 table行和数据?如何使用剃刀模板实现这一目标?请指导。谢谢

    string template = "<table><tr><td>This is my sample template, 
    Hello @Model.Name!</td></tr> @if (@Model.IsUPS) {<tr><td> it is ups</td></tr> } 
    </table>";

    string result = Razor.Parse(template, new { Name = "World", IsUPS = true });

首先:我认为错误会产生以下语句:

@if (@Model.IsUPS) 

应该是:

@if (Model.IsUPS) 

在第一个 @ 之后你应该放服务器端代码,所以在写条件时另一个 @ 是不必要的。

其次:模板是不是单行粘贴的?如果不是,则需要使用逐字字符串:

string template = @"<table><tr><td>This is my sample template, 
                    Hello @Model.Name!</td></tr> @if (Model.IsUPS) {<tr><td> it is ups</td></tr> } 
                    </table>";

第三: 向我们展示您遇到的错误。您在使用 RazorEngine 库吗?​​

第四:在我修改代码应该可以工作之后,我自己检查了。

假设您的 "string result =" 线路工作正常;

有很多事情我会在这里做不同的事情。

与您使用“@”有关的错误消息(您应该真正分享错误是什么)。

试试这个:

@{
string template = @"<table><tr><td>This is my sample template, Hello" + this.Model.Name + @"!</td></tr>";

if (true)
{
    template += @"<tr><td> it is ups</td></tr>";
}

template += @"</table>";
}

“@{ }”块将 html 封装在剃刀块中,因此 @ 用于剃刀更改。请注意,我已经使字符串使用 @"" 而不是 "",这样如果您想在行之间拆分 html,则不需要进行字符串连接。