如果在html支票簿中添加条件

时间:2019-02-10 14:11:12

标签: javascript jquery html razor

我需要像使用HTML复选框中的if条件一样。 例如,如果复选框具有某些值,则将其选中,否则未选中。

代码

<label><input type="checkbox" name="SelectedRoles[]" value="@role.Id" @if (Model.SelectedRoles.Contains(role.Name)) { <text> checked="checked" </text> } />

3 个答案:

答案 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;
    }
}