我对MVC开始从网络表单迁移有点新鲜,所以请耐心等待。
我有一个性别定义为的单选按钮组;
<div class="form-group">
@Html.LabelFor(m => m.Gender, new { @class = "col-xs-3 control-label" })
<div class="col-xs-5">
<div class="radio">
<label>
@Html.RadioButtonFor(m => m.Gender, new { @class = "form-control", value= Gender.Male})<span>Male</span>
@*<input type="radio" name="gender" value="male"/> Male*@
</label>
</div>
<div class="radio">
<label>
@Html.RadioButtonFor(m => m.Gender, new { @class = "form-control", value = Gender.Female }) <span>Female</span >
@*<input type="radio" name="gender" value="female"/> Female*@
</label>
</div>
</div>
</div>
其中Gender是另一个项目中定义的枚举,但viewmodel类使用该枚举。
[Required]
[Display(Name = "Gender")]
public DomainClasses.Enums.Gender Gender { get; set; }
无论我似乎试图做到这一点,我都会得到以下验证错误。
值'{class = form-control,value = Male}'对于Gender不起作用。
更新
提交之前的原始外观是
但是在改用建议的方法后,为什么现在看看呢?
答案 0 :(得分:5)
查看此图片
此图显示,超载没有接受第二个参数作为 Html属性,所以你需要这样写:< / p>
<div class="form-group">
@Html.LabelFor(m => m.Gender, new { @class = "col-xs-3 control-label" })
<div class="col-xs-5">
<div class="radio">
<label>
@Html.RadioButtonFor(m => m.Gender, Gender.Male , new { @class = "form-control" })<span>Male</span>
@*<input type="radio" name="gender" value="male"/> Male*@
</label>
</div>
<div class="radio">
<label>
@Html.RadioButtonFor(m => m.Gender, Gender.Female, new { @class = "form-control" }) <span>Female</span >
@*<input type="radio" name="gender" value="female"/> Female*@
</label>
</div>
</div>
</div>
在此重载中,您将第二个参数作为 RadioButton 的值传递