Настройка атрибута html, который является зарезервированным ключевым словом в Html.CheckBoxFor в ASP.NET MVC

Я использую HtmlHelper для создания флажка в моем представлении следующим образом:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { checked = "checked" })%>

Тем не менее, ошибка возникает, так как проверяется зарезервированное ключевое слово. Я нашел пару человек, говорящих, что вы должны использовать "зарезервированный префикс слова" и просто поместите uderscore перед атрибутом так:

<%= Html.CheckBoxFor(model => model.SeatOnly, new { _checked = "checked" })%>

Это не генерирует ошибку, но в сгенерированном html атрибут фактически "_checked", что означает, что он не работает (если я использую firebug и удаляю подчеркивание, этот атрибут вступает в силу).

Кто-нибудь знает об этом, продолжая использовать CheckBoxFor?

Спасибо

Ответ 1

<%= Html.CheckBoxFor(model => model.SeatOnly, new { @checked = "checked" })%>

Вам нужно префикс "@": -)

Обновление

Просто протестировано со следующим и работает. Попробуйте это...

Model

public class MyModel
{
    public bool SomeBooleanValue { get; set; }
    public string Title { get; set; }
}

Просмотр (привязанный только к важным битам)

<%= Html.TextBoxFor(x => x.Title) %>

<%= Html.CheckBoxFor(x => x.SomeBooleanValue, new { @checked = "checked" }) %>

Ответ 2

У меня была та же проблема: атрибут "checked" всегда был пропущен в html-коде. Я решил проблему, передав "true" в модель. фрагмент выглядит следующим образом:

MyModel model = new MyModel();
model.SomeBooleanValue = true;

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

Может быть, это помогает..

Ответ 3

Используйте @checked

Также происходит с атрибутом class (зарезервированное слово), они используют @class

Ответ 4

Я не мог понять, как заставить HtmlHelper зарегистрировать проверенный атрибут, поэтому я просто использовал Html.CheckBox("SeatOnly", true). Таким образом, свойство в моей модели просмотра все еще установлено, и флажок установлен.

Это прекрасно, но мне все равно интересно узнать, почему @checked не работает так же, как @class.