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

时间:2015-01-09 14:55:48

标签: c# templates razor

我正在尝试此代码,但在运行时收到错误。我想如果IsUPS具有真正的价值,那么新的表格行和&如果IsUPS为false,那么表数据将被添加到表中,那么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 });

2 个答案:

答案 0 :(得分:1)

假设您的&#34;字符串结果=&#34;线正常工作;

我会在这里采取不同的做法。

与您使用&#34; @&#34;相关的错误消息(您应该真的已经分享了错误)。

试试这个:

@{
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>";
}

&#34; @ {}&#34; block将html封装在razor块中,因此使用@来更改razor。请注意我已经使用了@&#34;&#34;而不是&#34;&#34;因此,如果你想在行之间拆分html,你就不需要进行字符串连接。

答案 1 :(得分:0)

首先:我认为错误会产生以下声明:

@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库吗?

第四:我修复后代码应该有效,请自行检查。