剃刀三元逻辑打印整个字符串而不是模型值?

时间:2019-02-27 18:01:10

标签: c# razor logic ternary

我一直在使用逻辑语句,由于存在语法错误,该逻辑语句一直给我错误,但无法找到此语法错误的位置?

我基本上想在给定布尔值的两个样式集之间进行切换

        var imageStyles = Model.isSelected ? "background-position-x: Model.CropPositionX%; background-image: url(Model.ContentUrl);" : "background -position: Model.CropPosition%; background-image: url(Model.ContentUrl);";

但是当我将其添加到div标签中时,变量imageStyles是否呈现为字符串,并且未采用模型的值...这是怎么回事?

1 个答案:

答案 0 :(得分:1)

您需要使用'@',以便将代码解释为C#而不是原始String。用法示例:

 var imageStyles = Model.isSelected ? "background-position-x: "+@Model.CropPositionX+"%; background-image: url("+@Model.ContentUrl+");" : "background -position:" + @Model.CropPosition+"%; background-image: url("+@Model.ContentUrl+");";

您还可以使用字符串插值,具体取决于剃刀视图引擎使用的C#版本。

在这种情况下,它看起来像这样(我认为更干净):

 var imageStyles = Model.isSelected ? $"background-position-x: {Model.CropPositionX}%; background-image: url({Model.ContentUrl});" : "background -position: {Model.CropPosition}%; background-image: url({Model.ContentUrl});";