Насколько я знаю, атрибут checked="checked"
установлен, потому что текущее значение этих переключателей равно значению модели (свойство, которое вы назначаете в атрибуте asp-for
внутри помощника по тегам).Следовательно, ваша текущая установка с asp-for="@item.Value"
здесь неверна:
<input asp-for="@item.Value" type="radio" value="@item.Value" />
Если вы хотите установить их значения на основе свойства Selected
внутри SelectListItem
экземпляра, вам нужно использовать свойство из вашей модели представленияКласс в атрибут asp-for
(свойство должно быть определено как тип значения или строка).
Ниже приведен пример правильной настройки:
Модель
// Viewmodel class
public class ViewModel
{
// used to store selected value in select tag helper
public string SelectedValue { get; set; }
public List<SelectListItem> OptionList { get; set; }
}
Действие контроллера
// Populate select list
[HttpGet]
public IActionResult Change()
{
var model = new ViewModel();
model.OptionList = new List<SelectListItem>();
// populate list values here
model.OptionList.Add(new SelectListItem { Text = "1001", Value = "Vilnius", Selected = true });
model.OptionList.Add(new SelectListItem { Text = "1002", Value = "Trakai", Selected = false });
return View(model);
}
Вид
@* Set viewmodel property into tag helper *@
@model ViewModel
<form asp-controller="Manage" asp-action="Change" method="post">
@foreach (var item in Model.OptionList)
{
<br />
<input asp-for="SelectedValue" type="radio" value="@item.Value" /> @(item.Value + " - " + item.Text)
}
<br />
<input type="submit" value="OK" />
</form>
Связанные с этим проблемы:
Помощник по меткам радиокнопок устанавливает для каждого переключателя установленный флажок