ASP.NET核心无法将范围名称分配给局部变量

h7appiyu  于 2023-01-27  发布在  .NET
关注(0)|答案(1)|浏览(94)

我在表单中添加动态输入,当我添加时,我动态地为输入创建一个名称并设置它。但是,我不能为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检查时,范围名称被设置为“data-valmsg-for=“NameofContentInput”。我如何正确地将范围名称设置为“@Model.NameofContentInput”?

ut6juiuv

ut6juiuv1#

asp-validation-for标记助手用于模型的属性,而不是模式的属性名称,这就是asp-validation-for="@Model.NameofContentInput"将呈现为data-valmsg-for="NameofContentInput"而不是data-valmsg-for="test"的原因。
更多详细信息,您可以参考ValidationMessageTagHelper's源代码。
它将使用此方法生成html,您可以发现它将根据属性名称而不是值生成html。

相关问题