radio-button - MVC 5 RadioButtonFor enum,总是选择默认的枚举值零?

标签 radio-button html-helper asp.net-mvc-5.2

假设我有一个枚举:

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"

为什么 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>

最佳答案

之所以选择它是因为您的属性(property)值(value)StatusOrderStausType.Waiting (这就是绑定(bind)的工作原理!)。

删除 new {@checked = true}来自 @Html.RadioButtonFor()方法并在您的 Controller 中,设置 Status 的值至OrderStausType.Shipped在你将它传递给 View 之前。

另请注意,您应该使用 <label>元素而不是 <span>将标签与单选按钮相关联

@Html.RadioButtonFor(m => m.Status, OrderStausType.Picked, new {id = OrderStausType.Picked)
<label for=@OrderStausType.Picked>@OrderStausType.Picked</label>

关于radio-button - MVC 5 RadioButtonFor enum,总是选择默认的枚举值零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27085665/

相关文章:

Grails RadioGroup,如何将标签绑定(bind)到电台名称

javascript - 限制每行显示的单选按钮

@Url.action() 的 ASP.NET MVC 帖子

c# - Id POST 作为隐藏字段但在 Controller 中为空

javascript 和单选按钮的 this.value

单选按钮未选择的 AngularJS 问题

asp.net - 从母版页调用 Html.RenderPartial

javascript - ReactJS.NET MVC HTML 帮助器

c# - 如何在 MVC 5 中将数据从注册操作方法传递到自定义 html 电子邮件操作

asp.net-mvc - IIS 7.5 上的 MVC5 路由错误 (404.0) 错误