ObjectGraphDataAnnotationsValidator
Blazorの子コンポーネントのリストを使用してを実装しようとしています。のリストはAnimals
、forループによってレンダリングされた形式でバインドされます。Childクラスのプロパティの1つは必須です。これはコードです:
Test.razor
@using System.ComponentModel.DataAnnotations
@page "/Test"
@code {
public class MyClass
{
public MyClass()
{
Animals = new List<AnimalItem>();
}
[Required]
public string FormName { get; set; }
public IList<AnimalItem> Animals { get; set; }
}
public class AnimalItem
{
[Required]
public string Name { get; set; }
}
protected override async Task OnInitializedAsync()
{
MyFormData = new MyClass()
{
Animals = new List<AnimalItem>()
{
new AnimalItem { Name = "Fuffy" },
new AnimalItem { Name = "Flaffy" }
}
};
await base.OnInitializedAsync();
}
public MyClass MyFormData { get; set; }
private void OnValidSubmit()
{
}
}
<EditForm Model="MyFormData" OnValidSubmit="@OnValidSubmit" >
<ObjectGraphDataAnnotationsValidator />
<ValidationSummary />
<InputText type="text" @bind-Value="MyFormData.FormName"/>
@foreach (var animal in MyFormData.Animals)
{
<Animal AnimalItem="animal"></Animal>
}
<button type="submit">Post</button>
</EditForm>
これは私のコンポーネントです:
Animal.razor
@code {
[Parameter]
public Test.AnimalItem AnimalItem { get; set; }
}
<label for="Animal">Animal</label>
<InputText id="Animal" type="text" @bind-Value="@AnimalItem.Name" />
コンポーネントリストを編集して[名前]フィールドをクリアすると、フォームからNameプロパティが必要であることが正しく通知されます。ただし、送信ボタンを押しても保存できます。私は何が間違っているのですか?Blazorで検証をデバッグする方法に関するアドバイスは大歓迎です:)
ありがとう
私はあなたが上[ValidateComplexType]
のAnimals
コレクションに追加する必要があるかもしれないと思いますMyClass
public class MyClass
{
public MyClass()
{
Animals = new List<AnimalItem>();
}
[Required]
public string FormName { get; set; }
[ValidateComplexType]
public IList<AnimalItem> Animals { get; set; }
}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加