Це не правильний синтаксис
Перший параметр - це не значення прапорця, а, отже, перегляд прив’язки моделі для прапорця:
@Html.CheckBoxFor(m => m.SomeBooleanProperty, new { @checked = "checked" });
Перший параметр повинен ідентифікувати логічне властивість у вашій моделі (це вираз, а не анонімний метод, що повертає значення), а друге властивість визначає будь-які додаткові атрибути елемента HTML. Я не впевнений на 100%, що наведений вище атрибут спочатку встановить ваш прапорець, але ви можете спробувати. Але будьте обережні. Незважаючи на те, що це може спрацювати, у вас можуть виникнути проблеми пізніше, при завантаженні дійсних даних моделі і для цієї конкретної властивості встановлено значення false
.
Правильний спосіб
Хоча моєю правильною пропозицією було б надати ініціалізовану модель для вашого подання з цим конкретним булевим властивістю, ініціалізованим до true
.
Типи властивостей
Відповідно до HtmlHelper
методів розширення MVC Asp.net та внутрішньої роботи, прапорці повинні прив’язуватись до булевих значень, а не цілих чисел, що здається, що ви хочете зробити. У цьому випадку приховане поле може зберігати файл id
.
Інші помічники
Звичайно, існують інші допоміжні методи, які ви можете використовувати для більшої гнучкості щодо значень і поведінки прапорців:
@Html.CheckBox("templateId", new { value = item.TemplateID, @checked = true });
Примітка : checked
це логічна властивість елемента HTML, а не атрибут value, що означає, що ви можете призначити йому будь-яке значення. Правильний синтаксис HTML не включає жодних присвоєнь, але неможливо надати анонімному об’єкту C # невизначене властивість, яке відображатиметься як властивість елемента HTML.
item
частиною вашої моделі чи що?