MVC 5 RadioButtonFor перечисление, значение перечисления по умолчанию ноль всегда выбирается?
скажем, у меня есть перечислимый:
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 framework? Спасибо.
модель:
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
is OrderStausType.Waiting
(вот как работает привязка!).
удалить new {@checked = true}
С @Html.RadioButtonFor()
метод и в вашем контроллере установите значение Status
to OrderStausType.Shipped
прежде чем передать его в вид.
Заметим также, вы должны использовать <label>
элемент а, что а <span>
чтобы связать метку с переключателем
@Html.RadioButtonFor(m => m.Status, OrderStausType.Picked, new {id = OrderStausType.Picked)
<label for=@OrderStausType.Picked>@OrderStausType.Picked</label>