You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为@Html.CheckBoxFor传递data属性?适配BootstrapToggle问题

解决@Html.CheckBoxFor添加data-off/data-on属性的问题

我来帮你搞定这个BootstrapToggle依赖属性的问题!其实核心是要注意C#的命名规则和Razor的自动转换逻辑,下面给你一步步说明正确的写法:

首先要明确:C#的标识符里不能直接用短横线(-),所以直接写data-off会导致编译报错。Razor提供了一个实用的转换规则——用下划线(_)代替短横线,它会自动帮你转换成HTML里的短横线格式。

具体代码示例

假设你的视图模型有一个布尔类型的状态属性:

public class StatusViewModel
{
    public bool IsActive { get; set; }
}

在视图中,你只需要把data-off和data-on写成data_off和data_on,放在CheckBoxFor的第二个匿名对象参数里即可:

@Html.CheckBoxFor(m => m.IsActive, new { 
    data_off = "Inactive", 
    data_on = "Active",
    @class = "toggle" // 可以顺便加上BootstrapToggle需要的样式类
})

生成的HTML结果

这样写之后,Razor会输出符合预期的HTML:

<input data-off="Inactive" data-on="Active" class="toggle" id="IsActive" name="IsActive" type="checkbox" value="true" />
<input name="IsActive" type="hidden" value="false" />

常见问题排查

如果之前的代码要么编译失败要么属性缺失,大概率是这两个原因:

  • 直接在匿名对象里写了data-off:C#不允许标识符包含短横线,所以编译报错;
  • 忘记把属性放在CheckBoxFor的第二个参数里:没有传递自定义HTML属性,自然不会生成对应的标签属性。

内容的提问来源于stack exchange,提问作者user9157250

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 08:11:54