<MyComponent MyParameter="@MyParameter"></MyComponent>
Я хочу, чтобы тег Мой Компонент выдавал ошибку, когда для параметра Мой параметр не указано значение.
Послушайте, компонент .Net EditForm выдает ошибку, когда параметр модели не указан, это ошибка, которую я бы хотел иметь. <EditForm ></EditForm>
Самое близкое, что вы можете получить во время компиляции, это предупреждение с EditorRequired:
[Parameter, EditorRequired]
public string MyProperty { get; set; }
Во время выполнения вы можете бросить в соответствующую точку. В override OnParametersSet()
самый логичный выбор.
Обратите внимание, что <EditForm />
не показывает никаких предупреждений, потому что его контракт требует Model или EditContext. Вы не можете выразить это с помощью атрибутов (пока).
Оба других ответа действительны, но я бы сделал это:
public override Task SetParametersAsync(ParameterView parameters)
{
parameters.SetParameterProperties(this);
if (MyParameter == null)
throw new InvalidOperationException($"{nameof(MyComponent)} requires a {nameof(MyParameter)} parameter.");
return base.SetParametersAsync(ParameterView.Empty);
}
Почему? SetParametersAsync
— это метод входа, вызываемый визуализатором для компонента: код компонента не выполнялся. Если, скажем, вы поместили свой чек в OnParametersSet{Async}
, возможно, вы пытались использовать его в OnInitialized{Async}
— вы не сказали нам, почему он должен быть установлен!
Выполните проверку на нулевое значение в разделе кода
ParametersSet
илиOnInitialized
переопределения событияMyComponent
, а затем выдайте ошибку, если оно равно нулю.