#c# #blazor-webassembly
Вопрос:
Я немного в тупике здесь, потому что у меня действительно применен атрибут параметра. Кажется, я просто следую документации один на один.
Сообщение об ошибке
Unhandled exception rendering component: Object of type 'Onero.Client.Features.CourseManager.CourseModelRegister' has a property matching the name 'HighSchoolRegistrationModelId', but it does not have [ParameterAttribute] applied.
Иерархия компонентов
//parent
<CascadingValue Value="HighSchoolRegistrationModelId">
<CourseModelAddForm></CourseModelAddForm>
</CascadingValue>
@code {
public long HighSchoolRegistrationModelId;
protected override async Task OnInitializedAsync()
{
await base.OnInitializedAsync();
HighSchoolRegistrationModelId = await CourseService.GetHighSchool();
}
}
//middle component
@if (add)
{
<CourseModelRegister HighSchoolRegistrationModelId="@HighSchoolRegistrationModelId">
</CourseModelRegister>
}
@code {
[CascadingParameter]
protected long HighSchoolRegistrationModelId { get; set; }
private bool add = false;
protected override async Task OnParametersSetAsync()
{
await base.OnParametersSetAsync();
}
private void ShowAddForm()
{
add = true;
}
}
//Grandchild where error occurs
@code {
[CascadingParameter]
protected long HighSchoolRegistrationModelId { get; set; }
// rest of code omitted
}
Я что-то упускаю? Возможно, это связано с управлением жизненным циклом? Я пробовал использовать как OnInitialized, так и OnParametersSet.
Комментарии:
1. Я знаю, что прошло 2 месяца, у вас был шанс найти ответ на этот вопрос?
2. Нет, я смутно припоминаю, что где-то видел, что произошла ошибка с передачей внукам, которую нужно было исправить. В итоге я просто использовал
Parameter
, и это сработало достаточно хорошо.
Ответ №1:
Я уверен, что нашел проблему, у меня была точно такая же ситуация, и это потому, что я передавал значение параметру компонента, и он был определен как [каскадный параметр], поэтому это создало конфликт.
Итак, на этой линии:
<CourseModelRegister HighSchoolRegistrationModelId="@HighSchoolRegistrationModelId"> </CourseModelRegister>
Вам не нужно передавать значение HighSchoolRegistrationModelId, потому что оно будет заполнено параметром [Каскадный параметр]. В вашем случае вам, возможно, потребуется убедиться, что у вашего среднего компонента также есть [каскадный параметр], чтобы значение передавалось его дочерним элементам.
Комментарии:
1. К сожалению, удаление значения из этого тега все равно привело к той же ошибке.