首页 > 解决方案 > Razor 三元逻辑打印整个字符串而不是模型值?

问题描述

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

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

        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#razorlogicternary

解决方案


您需要使用“@”,以便将代码解释为 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});";

推荐阅读