У меня есть модель Hotel
и есть модель HotelPrice
в модели.Mvc razor radio button получить значение по умолчанию от модели
То, что я пытаюсь сделать, - это когда пользователь отображает информацию о странице отеля, чтобы показывать информацию о ценах на отели, также они могут быть доступны для редактирования. У меня есть свойство breakfastIncluded
на HotelPrice
экземплярах, которые я должен отображать в качестве переключателя.
Вот мой код:
<div>
@{
foreach(var hotelPrice in Model.HotelPrices)
{
<label class="mt-radio-inline>
@Html.RadioButtonFor(hotelModel => hotelPrice.breakfastIncluded, "1", new { @checked = (hotelPrice.Breakfast.ToString() == "1") })Yes
<span></span>
</label>
<label class="mt-radio-inline>
@Html.RadioButtonFor(hotelModel => hotelPrice.breakfastIncluded, "0", new { @checked = (hotelPrice.Breakfast.ToString() == "0") })No
<span></span>
</label>
}
}
Когда я показывать мою страницу (я не мог прийти редактирование части, пока), радио-кнопки всех breakfastIncluded
Свойства отображается как Unassigned и последняя-х (т.е. она должна быть «Да», но это похоже на «Нет»).
Однако, когда я проверял инструмент «Проверка» браузера, все проверенные свойства переключателей отображаются правильно (т. Е. Если это должно быть «Да», то проверенная радиокнопка верна и «Нет» проверена как ложная) ,
Я новичок в html, и я не мог понять, почему это происходит. Вы можете мне помочь? Заранее спасибо.
У вас есть несколько проблем - вы не можете использовать цикл foreach для привязки элементов управления к коллекции (см. [Этот ответ] (http://stackoverflow.com/questions/30094047/html-table-to-ado-net -datatable/30094943 # 30094943)). И вы не устанавливаете атрибут 'checked' (' RadioButtonFor() 'будет делать это правильно, когда вы исправляете свое представление (и' checked = "true" или 'checked =" false "или' checked = "ничего" 'все равно - они устанавливают состояние' checked', но поскольку только один может быть проверен, последний из них (и свойство должно быть 'bool', а не' int') –
Важным уроком в MVC Razor является НЕ использовать 'foreach' при переходе через коллекции для создания элементов Form. Всегда используйте, например,' for (var i = 0; i Model. HotelPrices [i], ...) '.Это необходимо для создания имен элементов, которые могут быть использованы привязкой модели при отправке формы. –
Спасибо и @StephenMuecke & @PeterB. Использование вместо foreach изменений положительно (т.е. теперь, по крайней мере, что-то появляется). Я установил проверенную часть радио (просто чтобы увидеть) как «Да» 'new {@checked =" true "}', для «Нет» 'new {@checked =" false "}' Теперь все v alues появляется как «Нет», тогда как они должны отображаться как «Да». @StephenMuecke я не мог понять, как я должен исправлять проверенные части. Также я не мог понять, что вы подразумеваете под словом «последний из них (и свойство должно быть bool, а не int)». Если вы сможете объяснить, я буду признателен. –