мне нужно то же самое, что и условие в флажке с использованием HTML. например, если флажок имеет какое-то значение, тогда он отмечен, в противном случае флажок не установлен.
Код
<label><input type = "checkbox" name = "SelectedRoles[]" value = "@role.Id" @if (Model.SelectedRoles.Contains(role.Name)) { <text> checked = "checked" </text> } />
Я думаю, что CheckBoxFor — лучшее решение этой проблемы.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы не можете написать подобную логику в HTML, вы должны использовать Javascript.
Попробуйте что-то вроде этого:
let checkboxElement = document.getElementsById('elementId');
window.onload = function() {
let myValue = 'someValue';
if (checkboxElement === myValue) {
checkboxElement.checked = true;
} else {
checkboxElement.checked = false;
}
}
ОП использует Razor: docs.microsoft.com/en-us/aspnet/web-pages/overview/…
Спасибо, я не был знаком с этим синтаксисом
Не используйте блок if, просто используйте одно выражение, которое условно что-то выводит.
Шаг за шагом... По сути, в Razor любое значение после @ будет выведено. Например:
@someVariable
Это «значение» также может быть результатом выражения, такого как вызов функции. Например:
@someFunction(someVariable)
Если ваше выражение содержит несколько токенов, просто сделайте то, что вы сделали бы в любом коде C#, и заключите его в круглые скобки:
@(1 + 1)
Используя все это, то же самое верно и для вашего условного вывода с использованием тернарный оператор. Просто используйте тернарный оператор, чтобы написать свое выражение, и оберните все это в @(), чтобы вывести результат:
@(Model.SelectedRoles.Contains(role.Name) ? "checked=\"checked\"" : string.Empty)
Попробуйте @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)
Почему бы просто не использовать
Html.Checkbox()илиHtml.CheckBoxFor()?