我在以下代码中的span元素上的asp-validation-for有问题。
<div class="form-group">
@if (Model.Property.Options.ElementAt(i).OptionTypeId == PropertyOptionType.CheckBox)
{
var ItemChecked = (Model.Property.Options.ElementAt(i).OptionValue == "on") ? " checked" : "";
<text><input type="checkbox" class="form-check-input" name="Options[@i].Code" id="Options[@i].Code" @ItemChecked data-val="false" />
<label class="form-check-label" for="Options[@i].Value"> @(Model.Property.Options.ElementAt(i).OptionValue)</label></text>
}
else if (Model.Property.Options.ElementAt(i).OptionTypeId == PropertyOptionType.List)
{
<label class="control-label">
@Model.Property.Options.ElementAt(i).OptionValue
</label>
<select class="form-control" name="Options[@i].Code"></select>
}
<span class="text-danger field-validation-valid" data-valmsg-replace="true" data-valmsg-for="Options.@(i).Code"></span>
以HTML呈现时,它显示为
<span class="text-danger field-validation-valid" data-valmsg-replace="true" data-valmsg-for="Options.[3].Code"></span>
但是没有验证错误消息出现在该范围内。设置为all时,它们会在页面级验证摘要中获取,因此不干扰代码的所有代码都可以正常运行,但是跨度的ID被方括号破坏。
有什么想法吗? 谢谢 标记
答案 0 :(得分:0)
要显示Validation Summary,您需要包括:
@Html.ValidationSummary(false/*excludePropertyErrors?*/, "", new { @class = "text-danger" })
要显示特定于字段的错误消息,您需要使用ValidationMessageFor
:
@Html.EditorFor(model => model.StudentName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.StudentName, "", new { @class = "text-danger" })
不要手动生成验证范围,HTML帮助程序将为您执行此操作……您将需要以下内容:
@for (int i = 0; i < Model.Property.Options.Count(); i++)
{
/* this one generates the input */
@Html.EditorFor(m => m.Property.Options[i], new { htmlAttributes = new { @class = "form-control" } })
/* this one generates the validation message */
@Html.ValidationMessageFor(m => m.Property.Options[i], "", new { @class = "text-danger" })
}