2010-05-25 3 views
1

У меня есть таблица, содержащая некоторую информацию, которая мне нужна. Все эти строки также содержат столбец с переключателем в нем, чтобы пользователь мог проверить одну из строк по умолчанию.Как проверить правильный переключатель

Когда я возвращаю данные из БД и хочу выбрать тот, который является текущим по умолчанию.

<% foreach (var item in (IEnumerable<Locale>) ViewData["Locales"]) { %> 
    <tr> 
     <td> 
      <%= Html.Encode(item.Language.Name) %> 
     </td> 
     <td> 
      <input type="radio" id="defaultLocale" name="defaultLocele" value="on" checked="<%= item.Default == false ? "false" : "true" %>" /> 
     </td> 

Я также пытался сделать это:

<input type="radio" id="defaultLocale" name="defaultLocele" value="on" checked="<%=item.Default == false ? "" : "checked" %>" /> 

, но ничего, кажется, делать правильные вещи. Я всегда заканчиваю тем, что проверил последнюю строку, что не совсем точно.

+1

возможно дубликат [как селективные кнопки работают с привязкой asp.net MVC] (http://stackoverflow.com/questions/1586346/how-do-radio-buttons-work-with-asp-net -mvc-binding) –

+0

Спасибо @ Ólafur Waage, я не нашел этого при выполнении моего поиска. Я тоже посмотрю. – MrW

ответ

1

В проверенном html нет значения bool true или false. Вы должны установить check = "checked", чтобы установить флажок (если вы хотите получить правильный синтаксис). Но большинство браузеров принимают любые checked = "..." как настройки. Таким образом, ваш checked = "false" интерпретируется как "Проверяется". Таким образом, все ваши флажки интерпретируются как проверенные, и только один может быть, последний проверяется.

Если вы не хотите, чтобы это было проверено, вы должны удалить весь атрибут checked =.

<input type="radio" id="defaultLocale" name="defaultLocele" value="on" <%=item.Default ? "" : "checked=\"checked\"" %> /> 
+0

Да. И это то, что я делаю на второй части кода. Или я делаю это неправильно? Я действительно думал, что это будет кусок пирога, но сейчас я начинаю сходить с ума. – MrW

+0

Его заявление уже делает это. @MrW - попробуйте поставить одинарные кавычки внутри значения 'checked', например:' checked = "<% = item.Default == false? '': 'Checked'%>" ' –

+1

Кроме того, поскольку вы уже тестируете против логического значения, нет необходимости сравнивать его с 'false':' checked = "<% = item.Default? 'checked': ''%>" ' –

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