Дочерний компонент состоит из входных данных с поиском типа для списка данных.
Метод возвращает результат из список с @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
Мобильная версия