Blazor — проверка списка данных из дочернего компонентаC#

Место общения программистов C#
Ответить
Anonymous
 Blazor — проверка списка данных из дочернего компонента

Сообщение Anonymous »

Я написал тестовое приложение Blazor, которое имеет EditForm с дочерним компонентом в родительском компоненте.
Дочерний компонент состоит из входных данных с поиском типа для списка данных.
Метод возвращает результат из список с @oninput. Выбор возвращается родительскому элементу через EventCallback с использованием @focusout Event и может быть сохранен в объекте вместе с другими входными данными в родительской EditForm с помощью Submit.
Как только проверка станет активной, я проверю возвращаемое значение дочерний компонент и установите Validation = true с помощью string.NotEmptyOrWhitespace(value) == false.
Может кто-нибудь сказать мне, как я могу реализовать тот или иной вариант для проверки данных в дочернем компоненте?
Прилагается мой демонстрационный код:
Родительский компонент

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

@page "/newentry"

New Entry






Value:





Comment:



Save





@code {

EditContext? editContext;

private string returnCatValue = "";
DisplayRecipeModel inputRecipe = new();

private void HandleOnSubmit()
{
List test = new();
inputRecipe.Category = returnCatValue;
test.Add(inputRecipe);
}

private void HandleCategorySelected(string selectedCategory)
{
returnCatValue = selectedCategory;
}
}
Дочерний компонент

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

@using BlazorApp.Models



Category:



@foreach (var item in recipes!)
{

}




@code {

private string? searchTermCat = "";
private List catResult = new();

[Parameter]
public DisplayRecipeModel? recipe { get; set; }

List? recipes = new()
{
new DisplayRecipeModel
{
Category = "Fun",
Payment = "Cash"
},
new DisplayRecipeModel
{
Category = "Cloth",
Payment = "Card"
},
new DisplayRecipeModel
{
Category = "Food",
Payment = "Mastercard"
}
};

[Parameter]
public EventCallback OnCategorySelected { get; set; }

private void GetCatResult()
{
if (string.IsNullOrEmpty(searchTermCat) == false)
{
recipes = catResult.Where(sq => sq.Category!.Contains(searchTermCat)).ToList();
StateHasChanged();
}
}

private void HandleReturnCatValue()
{
OnCategorySelected.InvokeAsync(searchTermCat);
StateHasChanged();
}
}
**
Модель класса**

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

using System.ComponentModel.DataAnnotations;

namespace BlazorApp.Models;

public class DisplayRecipeModel
{
public string? Id { get; set; }

[Required]
public double Value { get; set;  }

[Required]
public string? Category { get; set; }

[StringLength(20, ErrorMessage = "comment to long")]
public string? Comment { get; set; }
}
Буду признателен за любую помощь
Заранее спасибо

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

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

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

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

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

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