那不是正确的语法
第一个参数不是复选框的值,而是视图的模型绑定,因此:
@Html.CheckBoxFor(m => m.SomeBooleanProperty, new { @checked = "checked" });
第一个参数必须标识模型中的布尔属性(这是一个Expression而不是返回值的匿名方法),第二个属性定义了任何其他HTML元素属性。我不确定100%以上属性会首先选中您的复选框,但您可以尝试。但是要当心。即使它可能起作用,以后在加载有效的模型数据并将该特定属性设置为时也可能会遇到问题false。
正确的方法
尽管我的正确建议是使用初始化为的特定布尔属性为您的视图提供初始化的模型true。
物业类型
根据Asp.net MVC HtmlHelper扩展方法和内部工作原理,复选框需要绑定到布尔值,而不是整数,而不是您想要执行的操作。在这种情况下,隐藏字段可以存储id。
其他帮手
当然,您还可以使用其他辅助方法来提高复选框值和行为的灵活性:
@Html.CheckBox("templateId", new { value = item.TemplateID, @checked = true });
注意: checked 是HTML元素的布尔属性,而不是value属性,这意味着您可以为其分配任何值。正确的HTML语法不包含任何分配,但是无法提供具有未定义属性的匿名C#对象,该对象将呈现为HTML元素属性。