CSHTML使用变量设置标签多class类名渲染异常如何解决?
问题原因
Razor视图引擎的属性解析逻辑默认会按空格拆分未用引号包裹的属性值。你拼接的属性字符串为class=collapse multi-collapse,没有给属性值加引号,Razor解析时遇到空格就会将后面的multi-collapse识别为独立的空值属性,最终渲染为你遇到的错误结构。
解决方案
这里提供3种常用的正确写法,都可以输出预期的渲染结果:
- 方案1:直接绑定class属性值(最推荐)
不要自行拼接完整的属性字符串,直接把类名字段绑定到class属性的值位置,Razor会自动处理引号和空格:
var st = "collapse multi-collapse"; <tr class="@st">
- 方案2:拼接属性时主动加引号
如果确实需要动态生成完整的属性串,拼接时给属性值加上转义双引号即可:
var st = "collapse multi-collapse"; var style = $"class=\"{st}\""; <tr @style>
- 方案3:条件类名直接内联拼接
如果需要根据判断条件动态增减类名,直接在class属性内写内联逻辑即可,无需提前拼接变量:
<tr class="collapse @(needMultiCollapse ? "multi-collapse" : string.Empty)">
内容的提问来源于stack exchange,提问作者NovaDev
相关产品推荐
相关产品推荐

