2015-08-03 3 views
0

Я пытаюсь включить или отключить элемент управления на основе значения из модели. Я надеялся, что смогу использовать disabled="disabled", когда я хочу, чтобы элемент управления был отключен, или disabled = "", когда я хочу, чтобы он работал.Условное отключение элемента управления Bootstrap

@Html.DropDownListFor(x => x.AccountTypeId, Model.AccountTypes, "Select One", new { @class = "form-control", @disabled = Model.ClosedDate.HasValue ? "disabled" : "" }) 

Но это не работает, и элемент управления всегда отключен независимо от значения. Есть ли способ, которым я могу это сделать, без использования JavaScript или чего-то еще?

ответ

2

К сожалению, способ, которым атрибут disabled работает в HTML, присутствует в элементе независимо от значения, он отмечает, что элемент отключен.

Таким образом, вы можете изменить свой код, чтобы что-то вроде этого:

@Html.DropDownListFor(x => x.AccountTypeId, Model.AccountTypes, "Select One", (Model.ClosedDate.HasValue ? new { @class = "form-control", @disabled = "disabled" } : new { @class = "form-control" }) 

Не хорошенькая, но должны получить работу

+0

Спасибо. Итак, нет «чистого» способа отключить контроль? Какой шаблон был бы более приемлемым? Я предполагаю, что, возможно, отображение метки вместо элемента управления, основанного на «ClosedDate» в моем случае, будет другим способом? Но тогда вы теряете опубликованное значение. – Craig

1

еще один момент, чтобы вспомнить тот факт, что установка входа в качестве инвалидов чтобы форма не передавала значение ввода, и вы можете столкнуться с некоторыми проблемами, когда mvc связывает вашу модель, потому что они будут вставлять значения по умолчанию для отключенного свойства. Если вы хотите опубликовать значение обратно на свой контроллер, используйте вместо него атрибут readonly.

Смежные вопросы