C# Razor三元逻辑打印整个字符串,而不是模型值?

C# Razor三元逻辑打印整个字符串,而不是模型值?,c#,razor,logic,ternary,C#,Razor,Logic,Ternary,我一直在使用一个逻辑语句,它不断地给我错误,因为有一个语法错误,但找不到这个语法错误的位置 我基本上想在给定布尔值的两个样式集之间进行更改 var imageStyles = Model.isSelected ? "background-position-x: Model.CropPositionX%; background-image: url(Model.ContentUrl);" : "background -position: Model.CropPosition%; b

我一直在使用一个逻辑语句,它不断地给我错误,因为有一个语法错误,但找不到这个语法错误的位置

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

        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
并且模型的值不会被取下。。。这里出了什么问题?

您需要使用“@”,以便将代码解释为C#,而不是原始字符串。用法示例:

 var imageStyles = Model.isSelected ? "background-position-x: "+@Model.CropPositionX+"%; background-image: url("+@Model.ContentUrl+");" : "background -position:" + @Model.CropPosition+"%; background-image: url("+@Model.ContentUrl+");";
您还可以使用字符串插值,具体取决于razor视图引擎使用的C#版本

在这种情况下,它看起来是这样的(在我看来更干净):

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