C# 如何使Blazor的EditForm与数据注释一起工作?

C# 如何使Blazor的EditForm与数据注释一起工作?,c#,validation,blazor,C#,Validation,Blazor,在Blazor WebAssembly中创建新项目后,我只需修改index.razor以创建如下简单的编辑表单: @page "/" @using System.ComponentModel.DataAnnotations @using EditFormValidation.Models <h1>Hello, world!</h1> Welcome to your new app. <SurveyPrompt Title="How

在Blazor WebAssembly中创建新项目后,我只需修改index.razor以创建如下简单的编辑表单:

@page "/"

@using System.ComponentModel.DataAnnotations
@using EditFormValidation.Models
<h1>Hello, world!</h1>

Welcome to your new app.

<SurveyPrompt Title="How is Blazor working for you?" />

<EditForm EditContext="context" OnValidSubmit="HandleValidSubmit" OnInvalidSubmit="HandleInvalidSubmit">
    <DataAnnotationsValidator />

    <ValidationSummary />

    <InputText @bind-Value="adresse.Adresse1" />
    <ValidationMessage For="(() => adresse.Adresse1)" />

    <InputText @bind-Value="adresse.Adresse2" />
    <ValidationMessage For="(() => adresse.Adresse2)" />

    <InputText @bind-Value="adresse.Email" />
    <ValidationMessage For="(() => adresse.Email)" />

    <button type="submit">Save</button>
</EditForm>

@code{
    public class Adresse
    {
        [Required]
        public string Adresse1;

        [Required]
        public string Adresse2;

        [Required]
        [EmailAddress]
        public string Email;
    }

    Adresse adresse = new Adresse();
    EditContext context;

    protected override void OnInitialized()
    {
        base.OnInitialized();
        context = new EditContext(adresse);
    }

    private void HandleValidSubmit()
    {
        Console.WriteLine("Submit...");
    }

    private void HandleInvalidSubmit()
    {
        Console.WriteLine("Invalid Submit...");
    }
}
没有验证摘要,没有消息,当我按Save时会调用HandleValidSubmit。只有输入文本上的样式在文本位于内部时才会变为绿色


我的解决方案首先,删除以下代码:

 protected override void OnAfterRender(bool firstRender)
{
    base.OnAfterRender(firstRender);
    context.Validate();
}
请执行以下操作:

添加方法名HandleValidSubmit,如下所示:

private void HandleValidSubmit()
{
     Console.WriteLine("Submit...");
}
每当您单击要添加到EditForm的submit按钮时,就会调用此方法

<button type="submit">Save</button>

希望这有帮助…

首先,删除此代码:

 protected override void OnAfterRender(bool firstRender)
{
    base.OnAfterRender(firstRender);
    context.Validate();
}
请执行以下操作:

添加方法名HandleValidSubmit,如下所示:

private void HandleValidSubmit()
{
     Console.WriteLine("Submit...");
}
每当您单击要添加到EditForm的submit按钮时,就会调用此方法

<button type="submit">Save</button>

希望这有帮助…

模型的成员必须是属性。

模型的成员必须是属性。

回答很好:我修改了文件,但始终没有显示错误,HandleValidSubmit总是被调用。我发布了完整的修改和解决方案。您的模型类应该为每个属性定义get和set访问器,并且在末尾没有分号。我更新了我的答案以反映这一点。如果它解决了您的问题,您是否介意将其标记为答案,以便其他人知道它是有用的。回答很好:我修改了文件,但始终没有显示错误,HandleValidSubmit总是被调用。我发布了完整的修改和解决方案。您的模型类应该为每个属性定义get和set访问器,并且在末尾没有分号。我已经更新了我的答案以反映这一点。如果它解决了您的问题,您是否介意将其标记为答案,以便其他人知道它是有用的。