如何解决DataAnnotationsValidator 不适用于 Blazor 中的复合模型
<DataAnnotationsValidator />
不适用于我在剃刀页面中使用的复合模型 TradeViewModel。
有什么办法可以解决吗?
剃刀代码:
<EditForm Model="@TradeViewModel" OnValidSubmit="HandleValidSubmit" @onreset="HandleReset">
<ObjectGraphDataAnnotationsValidator />
<div class="form-row">
<div class="form-group col">
<label>Name</label>
<InputText @bind-Value="@trade.invitedName" class="form-control" />
<ValidationMessage For="@(() => trade.invitedName)" />
</div>
<div class="form-group col">
<label>Email</label>
<InputText @bind-Value="@trade.invitedEmail" class="form-control" />
<ValidationMessage For="@(() => trade.invitedEmail)" />
</div>
</div>
</EditForm>
假设inviteName 和invitedEmail 在不同的模型中。
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public class ModelA
{
[Required(ErrorMessage = "The Name is mandatory")]
public string invitedName { get; set; }
}
public class ModelB
{
[Required(ErrorMessage = "The Email is mandatory")]
public string invitedEmail { get; set; }
}
复合模型:
public class TradeViewModel
{
[ValidateComplexType]
public ModelA ModelA { get; set; }
[ValidateComplexType]
public ModelB ModelB { get; set; }
}
我尝试使用 ValidateComplex 类型方法,但在我的代码中无法识别。安装的软件包。 Microsoft.AspNetCore.Components.DataAnnotations.Validation
解决方法
对于复杂模型,使用 <DataAnnotationsValidator />
代替 <ObjectGraphDataAnnotationsValidator />
所以,代码如下
<EditForm Model="@TradeViewModel" OnValidSubmit="HandleValidSubmit" @onreset="HandleReset">
<ObjectGraphDataAnnotationsValidator /> // modify this line <DataAnnotationsValidator />
<div class="form-row">
<div class="form-group col">
<label>Name</label>
<InputText @bind-Value="@trade.invitedName" class="form-control" />
<ValidationMessage For="@(() => trade.invitedName)" />
</div>
<div class="form-group col">
<label>Email</label>
<InputText @bind-Value="@trade.invitedEmail" class="form-control" />
<ValidationMessage For="@(() => trade.invitedEmail)" />
</div>
</div>
</EditForm>
,
当我将 Microsoft.AspNetCore.Blazor.DataAnnotations.Validation
包正确安装到项目中时,它对我有用。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。