验证错误(数据注释)在视图中不起作用
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 属性才能使其正常工作。
我有一个单选按钮组和一个验证,以确保至少选择了一个选项。但是我的验证在视图上不起作用,但它们被控制器中的 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 属性才能使其正常工作。