【问题标题】:Incorrect ternary operation in RazorRazor 中不正确的三元运算
【发布时间】:2019-02-27 16:23:37
【问题描述】:

我有这个 div 标签,它使用三元运算来确定是应该使用一种样式还是应该使用不同的样式。

<div 
     class="@(Model.HeroBannerImageSmall ? "--imageSmall" : "--image")"
     style="@(Model.isSelected ? "background-position-x: "@Model.CropPositionX"% background-position-y: "@Model.CropPositionY"%; " : "background-position: @Model.UniformCropPosition%; ")
                 background-image: url(@Model.ContentUrl)">

</div>            

遵循风格

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

但这并没有添加模型值,而是将其写为字符串。如何插入值?

【问题讨论】:

    标签: c# html boolean logic


    【解决方案1】:

    尝试在三元内使用单引号

    <div
       class='@(Model.HeroBannerImageSmall ? "--imageSmall" : "--image")'
       style='@(Model.isSelected ? "background-position-x:@Model.CropPositionX" % "background-position-y:@Model.CropPositionY"&; : "background-position:@Model.UniformCropPosition"&;')
       background-image: url(@Model.ContentUrl)'>
    </div>
    

    【讨论】:

    • C# 代码中的单引号用于字符,而不是字符串,因此最好在 HTML 中使用单引号。
    • 容易出错。我遵循OP的格式。感谢您的指正。我已经更新了我的帖子。
    • 顺便说一句..逻辑也不正确。 ifSelected 应该同时选择 x 和 y,而不是三个单独的选项。
    • 我错误地删除了它,有点不确定那里发生了什么,所以我想我是在帮助清理代码。
    【解决方案2】:

    您必须混合搭配单引号和双引号才能完成这项工作!例如:

    class='@(Model.HeroBannerImageSmall ? "--imageSmall" : "--image")'
    

    如果您将其拉到 div 之前的代码分支中,可能会更容易阅读。即:

    @{
        var imageClass = Model.HeroBannerImageSmall ? "--imageSmall" : "--image";
    
        var imgageStyle = Model.isSelected ? 
                  "background-position-x: " + Model.CropPositionX + "% background-position-y: " + Model.CropPositionY + "%;" : 
                  "background-position: " + Model.UniformCropPosition + "%; ";
         imgageStyle += "background-image: url(" + Model.ContentUrl + ")";
    
    }
    
    
    
    class='@imageClass' style='@imageStyle'
    

    【讨论】:

    • 风格怎么样?
    • 老实说,样式标签中存在一些拼写错误/语法错误。这让你很难弄清楚你的目标是什么。但我尽力解析它!更新了我的答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 2020-01-14
    • 2014-06-18
    • 2013-08-19
    相关资源
    最近更新 更多