我目前正在按照教程学习 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”)时,我收到“消息字段为必填项”。 这里真的很困惑,仔细阅读文档。我做错了什么?控制台中没有任何内容表明存在任何问题。
这是一个稍微重构过的页面版本:
@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; }
}
}
所以你还向我们展示了其他东西。