Отключенный атрибут checkbox в ASP.NET MVC
My ViewModel обладает свойством выбора и выбора. Оба являются логическими. Я хотел бы, чтобы мой взгляд имел флажок, который включен, когда выбрано значение true и отключено, когда выбрано значение false. Каков правильный синтаксис бритвы, чтобы выполнить это?
Я попробовал код ниже в списке элементов в таблице. Каждая строка возвращается с отключенным флажком независимо от выбираемого значения.
@Html.CheckBoxFor(modelItem => item.Selected, new { @disabled = !item.Selectable })
Ответы
Ответ 1
Нелегко добиться этого с помощью if
условия внутри вспомогательного метода, потому что все нижеприведенные разметки будут отображать отключенный chechbox.
<input type="checkbox" disabled>
<input type="checkbox" disabled="disabled">
<input type="checkbox" disabled="false">
<input type="checkbox" disabled="no">
<input type="checkbox" disabled="enabled">
Это должно работать в бритве. Простой Если условие и рендеринг, что вы хотите.
@if(item.Selected)
{
@Html.CheckBoxFor(modelItem => item.Selected)
}
else
{
@Html.CheckBoxFor(modelItem => item.Selected, new { @disabled = "disabled"})
}
Вы можете подумать о написании пользовательского html-помощника, который отображает правильную разметку для этого.
Ответ 2
Это не сработает, потому что <input disabled="anything" />
приведет к отключению управления. Вам нужно иметь свойство @disabled, когда оно должно быть отключено.
Попробуйте что-то вроде этого:
@Html.CheckBoxFor(modelItem => item.Selected, item.Selectable ? (object)new {} : (object)new { @disabled = "disabled })
Обратите внимание, что вам может потребоваться выполнить команду (object)
Ответ 3
Извините, мой предыдущий ответ был неправильным.
Элемент ввода будет отключен, как только он отключит атрибут. Не имеет значения, истинно ли значение false. В HTML нельзя отключить значение false.
Таким образом, вам нужно будет установить отключенный атрибут только в том случае, если условие действительно.
что-то вроде:
object attributes = null;
if (!item.Selectable)
{
attributes = new { disabled = "disabled"};
}
@Html.CheckBoxFor(modelItem => item.Selected, attributes)