【问题标题】:Using ternary operator to output a string containing whitespace in Razor在 Razor 中使用三元运算符输出包含空格的字符串
【发布时间】:2012-05-24 05:25:13
【问题描述】:

我正在尝试在 Razor 中使用三元运算符,类似于 this question,但我想要输出的内容包含空格。这段代码

@(selectedGoal == null ? "" : "value=" + selectedGoal.Name)

应该产生

value="Goal 3"

因为 selectedGoal.Name 的值是“目标 3”。相反,我得到了

value="Goal" 3

这不好。我尝试了一堆不同的转义引号、@ 符号和没有 @ 符号的组合,但我就是无法让它工作,即

@(selectedGoal == null ? "" : "value=" + "selectedGoal.Name")
@(selectedGoal == null ? "" : "value=@selectedGoal.Name")

然后我得到类似的东西

value="selectedGoal.Name"

有人知道这应该怎么做吗?

【问题讨论】:

标签: asp.net razor ternary-operator


【解决方案1】:

您的 value 属性缺少自己的引号,因此它们会自动添加到空格之前。尝试将 value 移到表达式之外。

value="@(selectedGoal == null ? "" : selectedGoal.Name)"

【讨论】:

  • 出来是这样的:value=""Goal" 2".
  • @wohanley,我不确定这些额外的引号来自哪里。 .Name 实际上是否包含引号作为字符串的一部分?
  • 它真的,真的不应该,但如果这把 Razor 是正确的,那么也许这是唯一的可能性。我会再三检查。
  • Name 中应该没有任何地方添加引号,并且在同一页面的其他地方工作正常(即无引号)。
  • @wohanley,你是对的,试试更新的答案。我认为@ 再次对引号进行编码。我之前用@Html.Raw 而不是@ 包裹的答案似乎可行,但无论如何这种方式更干净一些。
【解决方案2】:

怎么样

@(selectedGoal == null ? "" : "value=\"" + selectedGoal.Name + \")

或者您可以尝试使用我的方法直接将它们呈现为 HTML 块 Html literal in Razor ternary expression

【讨论】:

    猜你喜欢
    • 2014-02-19
    • 1970-01-01
    • 1970-01-01
    • 2016-09-09
    • 2020-09-17
    • 2012-12-19
    • 2013-05-06
    • 2018-05-23
    • 2017-06-11
    相关资源
    最近更新 更多