我们如何根据值以编程方式选中或取消选中复选框?也就是说,对于特定用户,如果值为true,则应选中复选框,否则如果值为false,则需要取消选中该复选框。我按以下方式声明了复选框:
<input type="checkbox" class="checkbox">
答案 0 :(得分:25)
如果您因任何原因不想使用@ Html.CheckBoxFor而且您想坚持
<input type="checkbox">
然后我发现这是最好的方法:
<input @(Convert.ToBoolean(Model.YourPropertyHere) == true ? "checked='checked'" : string.Empty) type="checkbox" />
@Yasser上面提供的代码:
checked="@(required ? "checked" : "")"
对我来说没有用,因为它仍然将checked属性添加到元素中,设置checked =“”仍会将复选框呈现为已选中,这不是所需的输出,而是将整个语句包装到像这样的剃刀块:
@(Convert.ToBoolean(Model.YourPropertyHere) == true ? "checked='checked'" : string.Empty)
您将获得所需的结果。
答案 1 :(得分:21)
if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = "checked" })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}
希望这会有所帮助:)
答案 2 :(得分:15)
如果您要编写我们自己的checked
而不是使用<input>
等替代方法,则可以使用更简单的方法来包含或不包含Html.CheckBoxFor
属性:
<input type="checkbox" checked="@isChecked">
Razor非常聪明,能够自动生成
<input type="checkbox" checked="checked">
或
<input type="checkbox">
取决于isChecked
是true
还是false
。不需要if语句或重复代码。
答案 3 :(得分:2)
如果您正在使用MVC并从控制器中正确传递模型值,那么
@Html.CheckBoxFor(model => model.checkBox1)
......就是你所需要的。 html-helper执行逻辑以确定是否插入checked="checkbox"
代码。
否则,如果没有HTML帮助程序,您可以自己动态生成属性(其他人已经指出了如何),但不要错误地认为checked = ""
将取消选中该框。有关说明,请参阅this answer。
答案 4 :(得分:0)
如果要在代码隐藏中选中/取消选中复选框值,则必须在复选框标记中包含ID和runat服务器属性。
<checkbox Id="chk" runat="server" class="chkbox"/>
代码隐藏:
if(yourcondition==true)
chk.checked = true;
else
chk.checked = false;
如果您想在javascript中执行此操作
<checkbox Id="chk" class="chkbox"/>
JS:
if(yourcondition==true)
chk.checked = true;
else
chk.checked = false;
答案 5 :(得分:0)
尝试一下:
<input type="radio" name="filter_favorites" value="Favorites" @(loggedIn ? "checked" : "") />
所以这是一个简单的单选按钮,它检查 loggedIn 变量以及是否将检查真正的单选按钮,否则不进行检查。
答案 6 :(得分:0)
if(condition = true)
{
@Html.CheckBoxFor(x => x.Test, new { @checked = true })
}
else
{
@Html.CheckBoxFor(x => x.Test)
}
答案 7 :(得分:-1)
您必须为复选框命名, 例如:
<input name=checkBox1 type="checkbox" class="checkbox">
功能性:
if(x==1){
checkBox1.Checked = true; //To Check
}
else{
checkBox1.Checked = false // To Uncheck
}