【问题标题】:Should I add a double quote to c# variable for adding a css class in razor?我应该在 c# 变量中添加双引号以在 razor 中添加 css 类吗?
【发布时间】:2017-07-19 00:43:24
【问题描述】:

我想有条件地显示 css 类。

我有一个 if 语句,例如:

@if(a > 5)
{
  specialBackground = "background: green;";
}

然后在我的 html 表中,我有:

<table>
 <tr style=@specialBackground>
 </tr>
</table>

我的问题是:几天前,没有在@specialBackground 中添加双引号,我可以看到行背景颜色为绿色。 &lt;tr style=@specialBackground&gt;

但是今天,我需要在@specialBackground 中添加双引号,&lt;tr style="@specialBackground"&gt;,然后我可以看到行背景颜色为绿色。我相信我没有更改其他代码。

我的问题是:

  1. 我怎样才能找到有时不添加双引号有效,但有时无效的原因。

  2. 在这种情况下我应该添加双引号吗?

  3. 如果我没有在@specialBackground 中添加双引号,我可以将断点放在if(a &gt; 5) 中。如果我没有给这个变量加上双引号,我只能把断点放在specialBackground = "background: green;";为什么?

感谢您帮助我。我调试了 3 个小时,但不知道如何找到原因。我在 Stackoverflow 中没有找到类似的帖子。

【问题讨论】:

  • 首先,这是一种奇怪的做法,我认为这就是为什么你会得到奇怪的结果。尝试调试它,看看结果是什么,是 还是 包含双引号
  • 你就不能这样做 @if(a > 5) {}
    不会出现任何意外情况。
  • 您应该包含双引号。我不知道为什么没有它们它会起作用。
  • 可能是双引号单引号的问题,尝试使用单引号 specialBackground = 'background: green;';并将其包含在 ​​
  • @juharr 有任何官方参考文件来支持你所说的吗?谢谢。

标签: c# html css asp.net-mvc razor


【解决方案1】:

您应该在视图中保留双引号(或单引号,如果您愿意的话)

<table>
 <tr style="@specialBackground">
 </tr>
</table>

并在C#文件中正常处理字符串。

引号对于 HTML 属性是可选的,但你应该使用它们来保持一致性,因为当你的属性中有空格时它们是必需的,就像你一样。

属性放置在开始标签内,由名称和 一个值,由 = 字符分隔。属性值可以保留 如果它不包含空格或任何 " ' ` = ,则不加引号。 否则,必须使用单引号或双引号对其进行引用。 如果满足以下条件,则可以完全省略该值以及 = 字符 值为空字符串。

取自:https://mathiasbynens.be/notes/unquoted-attribute-values

【讨论】:

  • 如果我这样做了:​​。 是哪个实际值?如果是,为什么 """"(两个双引号)可以为样式添加 css 类?
  • 它不是那样工作的,在 C# string specialBackground = "background: green"; 中,双引号不是实际字符串的一部分。它们定义了字符串的开始和结束。所以从&lt;tr style="@specialBackground"&gt; 渲染的HTML 是&lt;tr style="background: green;"&gt;。要在 C# 字符串中包含双引号,您需要对它们进行转义,例如 string str = "you can \"quote\" me on this";
猜你喜欢
相关资源
最近更新 更多
热门标签