Здесь много других вопросов о переполнении стека и в других местах, но я потратил слишком много времени на просеивание через них, чтобы ответы на них, наконец, не спросили. Я пробовал много решений, найденных здесь, и никто из них не работает.ASP.NET MVC RadioButtonFor Не выбрано в загрузке
Моя проблема в том, как указано в названии; мои переключатели не устанавливаются на загрузку страницы, и я не могу понять, почему.
В коде ниже моей модели имеет логическое значение CanSubmit, в canSubmitYes и canSubmitNo идентификаторы генерируются идентификаторы с помощью
ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId("canSubmitYes")
и
ViewContext.ViewData.TemplateInfo.GetFullHtmlFieldId("canSubmitNo")
Мои радио кнопки и соответствующие метки в настоящее время набор с следующие:
@Html.LabelFor(Function(m) m.CanSubmit, "Yes", New With {.for = canSubmitYes})
@Html.RadioButtonFor(Function(m) m.CanSubmit, True, New With {.id = canSubmitYes, .class = "submit-toggle-yes"})
@Html.LabelFor(Function(m) m.CanSubmit, "No", New With {.for = canSubmitNo})
@Html.RadioButtonFor(Function(m) m.CanSubmit, False, New With {.id = canSubmitNo, .class = "submit-toggle-no"})
Что вы делали:
- Установка
checked="checked"
свойств в помощниках HTMLAttributes коллекции - раздеть все HtmlHelper коды вещи и просто использовать основные
<input type="radio" />
управления и по какой-то причине все еще не проверяется должным образом на нагрузке. - Пробовал использовать событие jQuery, чтобы установить свойство «checked» из них при загрузке документа, это тоже не сработало. (Через
.prop("checked", true)
) - Изменено мой формат HTML хелпер из
"false"
вfalse
, чтобы попытаться заставить его понять, что свойство является логическим, а не строка
Там нет других JavaScript событий настройки значений эти элементы управления. Когда я наблюдаю, как я нажимаю кнопки, на объектах не изменяются значения HTML, что заставляет меня думать, что свойство 'clicked'/'checked' является псевдо-свойством или состоянием, которое имеет браузер.
Неужели я пропустил что-то критическое, или я отсюда?
Заранее благодарен!
Update
я определил, что у него есть что-то делать с локальными переменными, которые я использую. Теперь у меня есть их в базовом <input>
, и если я их не подключу, они работают так, как ожидалось. Только когда я пытаюсь связать их с общим name
(способ связать их вместе), они не работают.
<input name="[email protected](Model.ID)" id="@canSubmitYes" type="radio" class="submit-toggle-yes" @(If(submitterPermission.IsSelected, "checked='checked'", "")) />
<label for="@canSubmitYes">Yes</label>
<input name="[email protected](Model.ID)" id="@canSubmitNo" type="radio" class="submit-toggle-no" @(If(submitterPermission.IsSelected, "", "checked='checked'")) />
<label for="@canSubmitNo">No</label>
Если удалить атрибут name=''
, то он правильно проверяет правильный элемент на нагрузке. Мне нужно, чтобы эти элементы были уникальными, поскольку на странице может быть 50+ таких палитр.
вот DotNetFiddle того, что вы пытаетесь сделать. Https://dotnetfiddle.net/MAqhYq – JamieD77
Да, и что у вас там есть, по сути, что я делаю, и все же мои переключатели не проверен - как ваш в вашей скрипке. – alexpwalsh
может быть так, как вы определяете параметр 'id' .. просто используйте там строковое значение или полностью оставьте его и посмотрите, что получится – JamieD77