Asp.net mvc 创建@Html.RadioButtonFor(ASP.NET MVC4)

Asp.net mvc 创建@Html.RadioButtonFor(ASP.NET MVC4),asp.net-mvc,asp.net-mvc-4,razor,Asp.net Mvc,Asp.net Mvc 4,Razor,这是任务模式 namespace TaskManager.Models { public class Task { private const int DefaultTaskPriority = 1; //some other properties [DefaultValue(DefaultTaskPriority)] public TaskPriority Priority { get; set; }

这是任务模式

namespace TaskManager.Models
{
    public class Task
    {
        private const int DefaultTaskPriority = 1;

        //some other properties

        [DefaultValue(DefaultTaskPriority)]
        public TaskPriority Priority { get; set; }

    }

    public enum TaskPriority
    {
        [Display(Name = "Low")]
        Low = 0,

        [Display(Name = "Default")]
        Normal = 1,

        [Display(Name = "High")]
        High = 2,

        [Display(Name = "Extreme")]
        Extreme = 3
    }
}
这是我观点的一部分

<div class="form-group">
@Html.LabelFor(u => u.Priority)
<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, 0) Low</label>
</div>

<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, 1, new { Checked = "checked" }) Default</label>
</div>

<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, 2) High</label>
</div>

<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, 3) Extreme</label>
</div>
@Html.ValidationMessageFor(u => u.Description, null, new {@class = "error"})                    
</div>

您不应该设置
new{Checked=“Checked”}
-它是
优先级的值,它将决定选择什么(这就是模型绑定的工作原理。您还可以将int值替换为
TaskPriority.Low
TaskPriority.Normal
等。如果我没有设置
new{Checked=“Checked”},您可以始终创建一个扩展方法来获取显示名称
未选择此单选按钮,我希望用户查看默认情况下选择的选项。错误。如果
优先级的值为
TaskPriority.Normal
,则将选择第二个(如果未明确设置,则默认为
TaskPriority.Low
)。不要试图覆盖MVC的模型绑定功能。另一个建议是添加
new{id=''}
以删除每个单选按钮中重复的
id
属性,并且
@Html.LabelFor(u=>u.Priority)
有点毫无意义(您已经有了与每个按钮关联的标签)所以它应该是
@Html.DisplayNameFor(m=>m.Priority)
<div class="form-group">
@Html.LabelFor(u => u.Priority)
<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, TaskPriority.Low) Low</label>
</div>

<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, TaskPriority.Normal) Normal</label>
</div>

<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, TaskPriority.High) High</label>
</div>

<div class="radio">
    <label>@Html.RadioButtonFor(model => model.Priority, TaskPriority.Extreme) Extreme</label>
</div>
@Html.ValidationMessageFor(u => u.Description, null, new {@class = "error"})                    
</div>