MVC 5 RadioButtonFor enum, значение 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>
Comments