MVC 5 RadioButtonFor enum всегда выбирается нулевое значение нулевого значения по умолчанию?
Скажем, у меня есть перечисление:
public enum OrderStatusType
{
Waiting = 0,
Pending,
Picked,
Shipped,
}
Я создал список переключателей следующим образом.
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Waiting)
Но ожидание всегда выбирается. Вывод HTML выглядит следующим образом:
input type="radio" value="Shipped" name="Status" id="Status" checked="True"
input type="radio" value="Waiting" name="Status" id="Status" checked="checked"
Почему атрибут "checked" автоматически добавляется в структуру MVC?
Спасибо.
Модель:
public class OrderViewModel
{
public OrderStatusType Status { get; set; }
}
Вид:
@using WebApplication17.Controllers
@model WebApplication17.Models.OrderViewModel
@{
ViewBag.Title = "Home Page";
}
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Picked)
<span>@OrderStatusType.Picked</span>
@Html.RadioButtonFor(m=>m.Status, OrderStatusType.Pending)
<span>@OrderStatusType.Pending</span>
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
<span>@OrderStatusType.Shipped</span>
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Waiting)
<span>@OrderStatusType.Waiting</span>
Ответы
Ответ 1
Его выбрали, потому что значение вашего свойства Status
равно OrderStausType.Waiting
(это как работает привязка!).
Удалите new {@checked = true}
из метода @Html.RadioButtonFor()
и в вашем контроллере установите значение Status
в OrderStausType.Shipped
, прежде чем передать его в представление.
Обратите внимание, что вы также должны использовать элемент <label>
, а <span>
- связать метку с радиокнопкой
@Html.RadioButtonFor(m => m.Status, OrderStausType.Picked, new {id = OrderStausType.Picked)
<label [email protected]>@OrderStausType.Picked</label>