12 html-helper radio-button asp.net-mvc-5.2
说我有一个枚举:
public enum OrderStatusType
{
Waiting = 0,
Pending,
Picked,
Shipped,
}
Run Code Online (Sandbox Code Playgroud)
我按如下方式生成单选按钮列表.
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Shipped, new {@checked = true})
@Html.RadioButtonFor(m => m.Status, OrderStatusType.Waiting)
Run Code Online (Sandbox Code Playgroud)
但等待总是被选中.输出HTML如下:
input type="radio" value="Shipped" name="Status" id="Status" checked="True"
input type="radio" value="Waiting" name="Status" id="Status" checked="checked"
Run Code Online (Sandbox Code Playgroud)
为什么MVC框架会自动添加"已检查"属性?谢谢.
该模型:
public class OrderViewModel
{
public OrderStatusType Status { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
风景:
@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>
Run Code Online (Sandbox Code Playgroud)
小智 21
选择它是因为你的属性的价值Status是OrderStausType.Waiting(这就是绑定的工作原理!).
删除new {@checked = true}从@Html.RadioButtonFor()方法和控制器,设置的值Status,以OrderStausType.Shipped将它传递到视图前.
另请注意,您应该使用<label>元素而不是a <span>来将标签与单选按钮相关联
@Html.RadioButtonFor(m => m.Status, OrderStausType.Picked, new {id = OrderStausType.Picked)
<label for=@OrderStausType.Picked>@OrderStausType.Picked</label>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25016 次 |
| 最近记录: |