Blazor 8.0 - 使用 DataAnnotationValidator 和 ValidationSummary 的问题

问题描述 投票:0回答:1

我目前正在按照教程学习 Blazor(我正在使用 8.0)。 我有一个 MessageWall.razor 文件,包含:

    @page "/MessageWall"

    <h3>MessageWall</h3>

    <EditForm Model="model" OnValidSubmit="ValidSubmission" FormName="MessageWallForm">
        <DataAnnotationsValidator />
        <ValidationSummary />

        <label for="message" class="form-label">@nameof(model.Message)</label>
        <InputText id="message" @bind-Value="model.Message" class="form-control" />

        <button class="btn btn-primary" type="submit">Submit</button>
    </EditForm>

    <ul>
        @foreach (string message in messages)
        {
            <li>@message</li>
        }
    </ul>

    @code {
        private MessageModel model = new();
        private List<string> messages = new();
        private void ValidSubmission()
        {
            messages.Add(model.Message);
            model = new();
        }
    }

和一个

MessageModel.cs
(包含在
Models
文件夹中,我使用
@_Imports.razor
将其添加到
@using BlazorServerMessageWall.Models
):


namespace BlazorServerMessageWall.Models;

public class MessageModel
{
    [Required]
    [StringLength(10, MinimumLength = 5)]
    public string Message { get; set; }

}

当我启动应用程序并输入有效条目(例如“hello”、“123456”)时,我收到“消息字段为必填项”。 这里真的很困惑,仔细阅读文档。我做错了什么?控制台中没有任何内容表明存在任何问题。

c# blazor
1个回答
0
投票

这是一个稍微重构过的页面版本:

@page "/"
@page "/"
@using System.ComponentModel.DataAnnotations

<h3>MessageWall</h3>

<EditForm Model="model" OnValidSubmit="ValidSubmission" FormName="MessageWallForm">
    <DataAnnotationsValidator />
    <ValidationSummary />

    <label for="message" class="form-label">@nameof(model.Message)</label>
    <InputText id="message" @bind-Value="model.Message" class="form-control" />

    <button class="btn btn-primary" type="submit">Submit</button>
</EditForm>

<ul>
    @foreach (string message in messages)
    {
        <li>@message</li>
    }
</ul>

@code {
    private MessageModel model = new();
    private List<string> messages = new();
    private void ValidSubmission()
    {
        messages.Add(model.Message);
        model = new();
    }
    public class MessageModel
    {
        [Required]
        [StringLength(10, MinimumLength = 5)]
        public string Message { get; set; }
    }
}

所以你还向我们展示了其他东西。

© www.soinside.com 2019 - 2024. All rights reserved.