Asp.net 使用三元运算符在Razor中输出包含空格的字符串

Asp.net 使用三元运算符在Razor中输出包含空格的字符串,asp.net,razor,ternary-operator,Asp.net,Razor,Ternary Operator,我试图在Razor中使用三元运算符,类似于,但我想要输出的内容包含空格。此代码 @(selectedGoal == null ? "" : "value=" + selectedGoal.Name) 应该产生 value="Goal 3" 作为selectedGoal.Name的值为“目标3”。相反,我得到了 value="Goal" 3 这是不好的。我尝试了一系列不同的转义引号、@symbols和no@symbols的组合,但我就是无法实现这一点,即 @(selectedGoal ==

我试图在Razor中使用三元运算符,类似于,但我想要输出的内容包含空格。此代码

@(selectedGoal == null ? "" : "value=" + selectedGoal.Name)
应该产生

value="Goal 3"
作为selectedGoal.Name的值为“目标3”。相反,我得到了

value="Goal" 3
这是不好的。我尝试了一系列不同的转义引号、@symbols和no@symbols的组合,但我就是无法实现这一点,即

@(selectedGoal == null ? "" : "value=" + "selectedGoal.Name")
@(selectedGoal == null ? "" : "value=@selectedGoal.Name")
然后我就得到了这样的东西

value="selectedGoal.Name"

有人知道该怎么做吗?

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

value="@(selectedGoal == null ? "" : selectedGoal.Name)"
那怎么办

@(selectedGoal == null ? "" : "value=\"" + selectedGoal.Name + \")
或者,您可以尝试直接将它们呈现为HTML块,在上使用我的方法

您所展示的任何内容都不会产生这些结果。显然,问题在于设置selectedGoal.Name的值的任何东西。我在页面的其他地方使用了
selectedGoal.Name
,效果很好,没有放错引号或任何东西。有些东西放了引号,而您显示的代码没有这样做。请参见:
value=”“Goal“2”
@wohanley,我不确定这些额外的引用是从哪里来的。
.Name
确实包含引号作为字符串的一部分吗?它真的,真的不应该包含引号,但是如果这个剃刀是正确的,那么这可能是唯一的可能性。我会仔细检查。应该没有任何地方可以在
名称中添加引号,而且在同一页的其他地方也可以正常工作(即,无引号)。@wohanley,你说得对,请尝试更新的答案。我想
@
又在对引号进行编码了。我以前的答案是用
@Html.Raw
包装的,而不是用
@
包装的,这似乎是可行的,但无论如何,这种方式有点干净。