StateHasChanged не обновляет пользовательский интерфейсC#

Место общения программистов C#
Ответить
Anonymous
 StateHasChanged не обновляет пользовательский интерфейс

Сообщение Anonymous »

Я знаю, что это распространенная проблема, но ни одно из решений не решило мою проблему. Все объяснения поначалу казались логичными, но после их реализации это абсолютно ничего не дало, и я здесь в некоторой растерянности.Ничто из того, что я делаю, не позволяет мне обновлять свой компонент пользовательского интерфейса и просто отображать некоторые сообщения об ошибках, которые происходят из атрибутов DataAnnotation. Я вручную проверяю свою модель данных на достоверность и в случае ее недействительности обновляю список сообщений об ошибках, которые, в свою очередь, должны отображаться внутри моего пользовательского интерфейса.
Это мой компонент :

Код: Выделить всё





@{
var unknownItem = (context as unknownasgdata);

@if (validationResults.Any())
{

@foreach (var validationResult in validationResults)
{
@validationResult.ErrorMessage
}

}


Bezeichnung[/b][b]
@(unknownItem.description)




Betriebsstätte[/b][b]
@(unknownItem.house)




Leistungsnummer[/b][b]
@(unknownItem.leinr)




Preis[/b][b]





Mahlzeitart[/b]





}


Speichern
Abbrechen



@code{

private async Task ValidateModel()
{
validationResults.Clear();
bool isValid = Validator.TryValidateObject(unknownItem, validationContext, validationResults, true);
Task.Delay(3000);
return isValid;
}

private async Task SubmitForm()
{
if (await ValidateModel())
{
// Proceed with database updates
// Your database update logic here

}
else
{
// Handle validation failures
// Show validation messages
validationResults = new List(validationResults);
await Task.Delay(3000);
await InvokeAsync(() =>
{
StateHasChanged();  // Ensure the UI is updated to reflect validation errors
});
await Task.Yield();
}
}

}

Конечно, кое-где не хватает кода, который важен для класса, но вы можете просто предположить, что такие основы, как инициализация переменных, работают. Я пытаюсь просто отправить форму и заранее выполнить проверку. ValidateModel() заполняет список результатов проверки, который я хочу отобразить в своем компоненте бритвы. Теоретически, не должен ли компонент выполнять рендеринг, как только я обновляю список, поскольку я проверяю элементы внутри своих компонентов бритвы? Я пробовал вызывать StateHasChanged несколько раз синхронно и асинхронно и использовать Task.Delay всякий раз, когда могу, но ничего не работает и ничего не позволяет мне обновить пользовательский интерфейс.


Подробнее здесь: https://stackoverflow.com/questions/785 ... pdating-ui
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»