我正在尝试用ASP.NET 7.0中的Razor页面编写一个网站,我正在尝试使用bootstrap 5.1表单在客户端显示服务器端验证消息。
Bootstrap提供了invalid-feedback
和valid-feedback
类,一旦字段被验证(在一个不成功的post请求之后),它们就应用于输入字段。然而,要有条件地显示消息,输入字段必须分别标记为is-invalid
或is-valid
。我如何获得这些信息?
我知道我可以使用ValidationMessageTagHelper
或IHtmlHelper
从html助手中获取验证消息:
<label asp-for="Name" class="form-label"></label>
<input asp-for="Name" class="form-select @(IsValid ? "is-valid" : "is-invalid")" />
<div class="invalid-feedback">
<!-- <span>@Html.ValidationMessageFor(i => i.Name)</span> -->
<span asp-validation-for="Name"></span>
</div>
我想做一个类似于第二行的东西,在那里我将类应用到输入。但是,我无法从Model中获取ValidationState,特别是当所有这些逻辑都在另一个EditorTemplate中时。到目前为止,我尝试使用ValidationMessageFor检查该字典时使用的相同方法获取该属性在ModelStateDictionary中使用的Key,但它们在该类中不是公开可用的,我还尝试在HtmlHelper中找到给予我访问该验证状态的方法。
到目前为止,我尝试在Html帮助器上使用扩展方法,但在不知道确切键的情况下没有ValidationState方法,这在嵌套属性中很困难:
Html.ViewContext.ModelState.GetValidationState(key)
1条答案
按热度按时间ycggw6v21#
正如我在评论中所看到的,我认为
NameFor
函数做了我想要的:现在我可以使用这个扩展来应用类,如下所示: