Validation blazor页面中列表的数据注释
我使用以下方法对blazor(服务器)中的表单进行验证 要使验证器也在循环中工作,需要做些什么?如果这有帮助,请尝试:Validation blazor页面中列表的数据注释,validation,asp.net-core,data-annotations,blazor,blazor-server-side,Validation,Asp.net Core,Data Annotations,Blazor,Blazor Server Side,我使用以下方法对blazor(服务器)中的表单进行验证 要使验证器也在循环中工作,需要做些什么?如果这有帮助,请尝试: 添加Microsoft.AspNetCore.Components.DataAnnotations.ValidationNuGet包。 这是一个预发布包,最新版本为3.2.0-rc1.20223.4。有一个计划将其包含在本机Blazor SDK中,但该版本应该可以使用到.NET 5 用ObjectGraphDataAnnotationsValidator替换DataAnn
Microsoft.AspNetCore.Components.DataAnnotations.Validation
NuGet包。
- 这是一个预发布包,最新版本为3.2.0-rc1.20223.4。有一个计划将其包含在本机Blazor SDK中,但该版本应该可以使用到.NET 5李>
ObjectGraphDataAnnotationsValidator替换DataAnnotationsValidator
- 您可以通过步骤2检查问题是否得到解决。如果没有,请继续执行步骤3
ValidateComplexType
注释列表属性。
- 您需要创建一个包含list属性的类
如果您像我一样使用
IValidatableObject
,上述解决方案将不起作用。解决方法是创建另一个属性来链接验证
e、 g
公共类MyModel:IValidatableObject
{
公共列表位置{get;}=new List();
公共对象位置验证{get;}
公共IEnumerable验证(ValidationContext ValidationContext)
{
var isValid=。。。;
如果(有效)
返回新的ValidationResult(“Places is invalid.”,new[]{nameof(PlacesValidation)});
}
}
<EditForm Model="@place" OnValidSubmit="HandleValidSubmit" Context="placesEdit" >
<DataAnnotationsValidator />
<InputText @bind-Value="place.Name"/>
<ValidationMessage For="() => place.Name" />
</EditForm>
@{place=new Place(); }
<EditForm Model="@places" OnValidSubmit="HandleValidSubmit" Context="placesEdit" >
<DataAnnotationsValidator />
@foreach(var place in places) {
<InputText @bind-Value="place.Name"/>
<ValidationMessage For="() => place.Name" />
}
</EditForm>
@{places=new List<Place>(); }