#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.