根据值选中或取消选中复选框?

alw*_*s v 17 c# asp.net-mvc

我们如何根据值以编程方式选中或取消选中复选框?也就是说,对于特定用户,如果值为true,则应选中复选框,否则如果值为false,则需要取消选中该复选框.我按以下方式声明了复选框:

<input type="checkbox" class="checkbox">
Run Code Online (Sandbox Code Playgroud)

ran*_*nah 27

如果你不想因为某种原因使用@ Html.CheckBoxFor而你想坚持下去

         <input type="checkbox"> 
Run Code Online (Sandbox Code Playgroud)

然后我发现这是最好的方法:

 <input @(Convert.ToBoolean(Model.YourPropertyHere) == true ?   "checked='checked'" : string.Empty)  type="checkbox" />
Run Code Online (Sandbox Code Playgroud)

@Yasser上面提供的代码:

    checked="@(required ? "checked" : "")"
Run Code Online (Sandbox Code Playgroud)

对我来说不起作用,因为它仍然将checked属性添加到元素中,设置checked =""仍然会将复选框呈现为已选中,这不是所需的输出,而是将整个语句包装到剃刀块中像这样:

     @(Convert.ToBoolean(Model.YourPropertyHere) == true ?   "checked='checked'" : string.Empty)
Run Code Online (Sandbox Code Playgroud)

你会得到理想的结果.


Yas*_*ser 22

if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = "checked" })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助 :)

  • 这是不正确的:`checked ="@(required?"checked":"")"` - 如果你想要取消选中该元素 - 该属性根本不存在. (12认同)

Dav*_*cia 17

checked如果您正在编写我们自己的属性<input>而不是使用以下替代方法,则可以使用更简单的方法来包含或不包含该属性Html.CheckBoxFor:

<input type="checkbox" checked="@isChecked">
Run Code Online (Sandbox Code Playgroud)

剃刀非常聪明,可以自动生成

<input type="checkbox" checked="checked">
Run Code Online (Sandbox Code Playgroud)

要么

<input type="checkbox">
Run Code Online (Sandbox Code Playgroud)

取决于isCheckedtrue或否false.不需要if语句或重复代码.