【发布时间】:2020-10-23 16:35:38
【问题描述】:
我们如何让 ValidationMessageFor 在验证时包含子对象?
我的课程如下所示:
public class Person
{
public Person()
{
Name = "";
FavoriteGame = "";
}
[Required(ErrorMessage = "Person's name is required and must not be empty.")]
public string Name { get; set; }
public string FavoriteGame { get; set; }
}
public class Team
{
public Team()
{
Name = "";
Game = "";
Coach = new Person();
}
[Required(ErrorMessage = "Team name is required and must not be empty.")]
public string Name { get; set; }
public string Game { get; set; }
public Person Coach { get; set; }
}
我的 Blazor EditForm 看起来像这样:
<EditForm Model="@myTeam" OnValidSubmit="@HandleValidSubmit">
<DataAnnotationsValidator />
<ValidationSummary />
<div class="row p-4">
<label>Team Name:</label>
<InputText id="name" @bind-Value="@myTeam.Name" />
<ValidationMessage For="@(() => myTeam.Name)" />
</div>
<div class="row p-4">
<label>Team Game:</label>
<InputText id="name" @bind-Value="@myTeam.Game" />
<ValidationMessage For="@(() => myTeam.Game)" />
</div>
<div class="row p-4">
<label>Coach Name:</label>
<InputText id="name" @bind-Value="@myTeam.Coach.Name" />
<ValidationMessage For="@(() => myTeam.Coach.Name)" />
</div>
<div class="row p-4">
<label>Coach's Favorite Game:</label>
<InputText id="name" @bind-Value="@myTeam.Coach.FavoriteGame" />
<ValidationMessage For="@(() => myTeam.Coach.FavoriteGame)" />
</div>
<div class="row p-4">
<button type="submit" class="btn btn-success">Submit</button>
</div>
</EditForm>
但是在运行时,只显示 Team 类中的验证...Person 类的验证被跳过,并且在运行时不会被调用或显示。
是否有一种简单的方法可以让 ValidationMessageFor 为由自定义对象组成的类属性工作,而无需创建全新的自定义验证器或自定义 ValidationMessageFor 组件?
【问题讨论】:
标签: c# validation blazor data-annotations