验证错误(数据注释)在视图中不起作用

Validation error(Data Annotations) not working in the view

我有一个单选按钮组和一个验证,以确保至少选择了一个选项。但是我的验证在视图上​​不起作用,但它们被控制器中的 Model.Valid 捕获。如何让它像其他验证错误一样显示在视图上,而不必在 Model.IsValid 失败时在控制器中添加消息?

查看:

<div class="form-group">
   <label for="" class="control-label">Role</label>
      <div>
         @foreach (var availableGroup in availableGroups)
          {
             <div class="radio">
                 <label>
                    <input type="radio" name="Group" value="@availableGroup" @defaulted/>
                                @availableGroup
                  </label>
             </div>
           }
        @Html.ValidationMessageFor(m => m.Group)
       </div>
</div>

型号:

[Required(ErrorMessage = "Group must be selected")]
[Display(Name = "Group")]
public string Group { get; set; }    

是否必须在单击按钮时使用 Jquery 然后手动验证?我已经看到 ModelState.AddModelError() 仍然需要我提交操作方法。我可以更改绑定单选按钮的方式吗?

编辑 1:Html 与开发人员工具中的选项之一等价的是

<label>
      <input type="radio" name="Group" value="Group 1">
            Group 1
</label>

编辑 2:我已经可以使用数据注释,并且它可以与其他所需的文本框一起正常工作。只有在单选按钮列表中我有问题。

希望我能解决您的问题,

解法:

将以下与验证相关的 jquery 文件添加到视图

<script type="text/javascript" src="@Url.Content("~/scripts/anyversion")"></script>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery.validate.js")"></script>
<script type="text/javascript" src="@Url.Content("~/scripts/jquery.validate.unobtrusive.js")"></script>

或者像下面这样添加,如果您使用的是捆绑包

@Scripts.Render("~/bundles/jquery")
@Scripts.Render("~/bundles/jqueryval")

问题答案:

是否必须在单击按钮时使用 Jquery 然后手动验证?

不,默认情况下,数据注释处理客户端和服务器验证。

希望对你有所帮助,请告诉我你的想法

谢谢 卡尔提克

这就是我解决问题的方法。我检查了 HTML 代码如何用于 Html.CheckboxFor 并尝试模仿它以获得结果。

<div class="radio">
     <label>
           <input type="radio" name="Group" data-val="true" data-val-required="Group must be selected" value="@availableGroup" @defaulted/>
                            @availableGroup
     </label>
</div>

我必须添加 data-val 和 data-val-required 属性才能使其正常工作。