2015-10-27 2 views
0

Здесь много других вопросов о переполнении стека и в других местах, но я потратил слишком много времени на просеивание через них, чтобы ответы на них, наконец, не спросили. Я пробовал много решений, найденных здесь, и никто из них не работает.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+ таких палитр.

+0

вот DotNetFiddle того, что вы пытаетесь сделать. Https://dotnetfiddle.net/MAqhYq – JamieD77

+0

Да, и что у вас там есть, по сути, что я делаю, и все же мои переключатели не проверен - как ваш в вашей скрипке. – alexpwalsh

+0

может быть так, как вы определяете параметр 'id' .. просто используйте там строковое значение или полностью оставьте его и посмотрите, что получится – JamieD77

ответ

-1

Я только что обнаружил, что оставил этот вопрос без ответа.

В конечном итоге мы не обнаружили проблему, но в конечном итоге придерживались другого подхода. Кроме того, я больше не работаю над этим проектом, поэтому я не могу адекватно обновить этот вопрос.

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