Проверка Блейзора — Форма Не может быть прочитана

#c# #.net #blazor

Вопрос:

У меня простая форма Блейзора. Когда я запускаю приложение, если я наберу в полях и нажму «Отправить», то я получу "field is required" . Я не уверен, почему. Если я открою свой блокнот для заметок, наберу несколько слов, скопирую и вставлю их в поля, то все будет нормально. Это ошибка с Blazor в режиме отладки или я делаю что-то не так?

 @page "/" @using SBShared.Models @using SBSender.Services @inject IQueueService queue

<h1>Hello, world!</h1>

Welcome to your new app.

<EditForm Model="@person" OnValidSubmit="@PublishMessage">
    <DataAnnotationsValidator />
    <ValidationSummary />

    <div class="form-group">
        <label for="firstName">First Name</label>
        <InputText id="firstName" class="form-control" @bind-Value="person.FirstName" />
    </div>
    <div class="form-group">
        <label for="lastName">Last Name</label>
        <InputText id="lastName" class="form-control" @bind-Value="person.LastName" />
    </div>
    <button type="submit" class="btn btn-primary">Submit</button> </EditForm>

@code{
    private PersonModel person = new PersonModel();

    private async Task PublishMessage()
    {
        await queue.SendMessageAsync(person, "personqueue");
        person = new PersonModel();
    } }
 

Комментарии:

1. Восстановите свой проект, затем запустите и попробуйте, и позвольте мне сказать, какой результат сейчас.

Ответ №1:

Чтобы ответить на ваш вопрос

Это ошибка с Blazor в режиме отладки или я делаю что-то не так?»

Я со всем уважением предполагаю, что если бы это было первое, оно было бы найдено давным-давно.

Итак, вот немного другая версия вашей тестовой страницы — теперь она самодостаточна с PersonModel определением — и она работает так, как рекламируется.

 @page "/PersonTest"
<h3>PersonTest</h3>

<h1>Hello, world!</h1>

Welcome to your new app.

<EditForm Model="@person" OnValidSubmit="@PublishMessage">
    <DataAnnotationsValidator />
    <ValidationSummary />

    <div class="form-group">
        <label for="firstName">First Name</label>
        <InputText id="firstName" class="form-control" @bind-Value="person.FirstName" />
    </div>
    <div class="form-group">
        <label for="lastName">Last Name</label>
        <InputText id="lastName" class="form-control" @bind-Value="person.LastName" />
    </div>
    <button type="submit" class="btn btn-primary">Submit</button>
</EditForm>

@code{
    private PersonModel person = new PersonModel();

    private async Task PublishMessage()
    {
        await Task.Delay(1000);
        person = new PersonModel();
    }

    public class PersonModel
    {
        [Required] public string FirstName { get; set; }
        public string LastName { get; set; }
    }
}
 

Вы можете увидеть, как он работает здесь, на моем тестовом сайте.

В приведенном выше коде я добавил Required атрибут FirstName . Вам нужно просмотреть, какие атрибуты у вас есть в полях PersonModel . «поле обязательно» также должно указывать вам, какое поле.

Опубликуйте копию PersonModel , если вы застряли.

Комментарии:

1. Хммм странно. Я получаю ту же ошибку с этой версией. Это должно быть на моей стороне с моим компьютером. Иногда это происходит и с другими сайтами. спасибо за подробное объяснение. Я попробую это на другом компьютере и посмотрю, в этом ли проблема. Возможно, у меня включено расширение Chrome, которое нарушает настройку UTF.