我将动态输入添加到我的表单,当我添加时,我动态地为我的输入创建一个名称并设置它。但是,我不能为span asp-validation-for参数设置相同的值。我的代码:
@model AnswerViewModel
<fieldset class="row answerrow" style="margin: 20px;" id="@Model.answer.Id">
<div class="form-group">
<input type="hidden" asp-for="@Model.answer.Id" name="@Model.NameofAnswerIdInput" value="@Model.answer.Id" ></input>
<input type="hidden" asp-for="@Model.answer.QuestionId" name="@Model.NameofQuestionIdInput" value="@Model.answer.QuestionId" />
<div id="@Model.answer.Id" class="d-flex form-group">
<input required="true" asp-for="@Model.CorrectAnswerId" name="@Model.NameofCorrectAnswerIdRadio"
type="radio" value="@Model.answer.Id" />
<span asp-validation-for="@Model.NameofCorrectAnswerIdRadio" class="text-danger"></span>
<input id="@Model.answer.Id" required="true" asp-for="@Model.answer.Content"
name="@Model.NameofContentInput" value="@Model.answer.Content" class="form-control ms-2" />
<span asp-validation-for="@Model.NameofContentInput" class="text-danger"></span>
</div>
</div>
</fieldset>
当我通过inspect检查时,span名称被设置为"data-valmsg-for="NameofContentInput"如何将span名称正确设置为@Model.NameofContentInput"?
asp-validation-for标签帮助器用于模型的属性,而不是用于模式的属性名。这就是为什么asp-validation-for="@Model.NameofContentInput"
将呈现为data-valmsg-for="NameofContentInput"
而不是data-valmsg-for="test"
的原因。
更多细节可以参考ValidationMessageTagHelper的源代码。
它将使用这个方法来生成html,你可以发现它将生成基于属性名而不是值的html。