我需要像使用HTML复选框中的if条件一样。 例如,如果复选框具有某些值,则将其选中,否则未选中。
代码
<label><input type="checkbox" name="SelectedRoles[]" value="@role.Id" @if (Model.SelectedRoles.Contains(role.Name)) { <text> checked="checked" </text> } />
答案 0 :(得分:1)
不要使用if
块,而只有一个表达式有条件地输出某些东西。
一次执行一个步骤...本质上,在Razor中,将输出@
之后的任何值。例如:
@someVariable
该“值”也可以是表达式的结果,例如函数调用。例如:
@someFunction(someVariable)
如果您的表达式包含多个标记,则只需执行任何C#代码中的操作并将其包装在括号中即可。
@(1 + 1)
使用所有这些,使用ternary operator的条件输出也是如此。只需使用三元运算符编写您的表达式,然后将整个内容包装在@()
中以输出其结果:
@(Model.SelectedRoles.Contains(role.Name) ? "checked=\"checked\"" : string.Empty)
答案 1 :(得分:0)
对于上述任何情况,请尝试@helper:
@model MyProject.Role
@helper checkRole(Role role) {
if (Model.SelectedRoles.Contains(role.Name))
{
<input type="checkbox" name="SelectedRoles[]" value="@role.Id" checked />
} else{
<input type="checkbox" name="SelectedRoles[]" value="@role.Id"/>
}
}
然后像这样从html调用方法:
@checkRole(role)
答案 2 :(得分:-1)
您无法使用HTML编写类似的逻辑,而必须使用Javascript。
尝试类似的事情:
let checkboxElement = document.getElementsById('elementId');
window.onload = function() {
let myValue = 'someValue';
if (checkboxElement === myValue) {
checkboxElement.checked = true;
} else {
checkboxElement.checked = false;
}
}