C# 如何验证Blazor EditForm中的单个字段?

C# 如何验证Blazor EditForm中的单个字段?,c#,blazor,data-annotations,blazor-server-side,blazor-client-side,C#,Blazor,Data Annotations,Blazor Server Side,Blazor Client Side,我从CascadingParameter [CascadingParameter] public EditContext EditContext { get; set; } 我意识到存在一个.Validate方法,它验证EditForm的整个模型 但我只想验证模型的一个字段 我可以从EditForm仅验证模型的一个字段吗 如果你想知道我为什么想要这个。。。因为我正在制作一个自定义组件,当值更改并且它是一个有效值时,它将执行一些操作。查看时,我发现如果要验证非复杂字段,只需创建一个FieldId

我从
CascadingParameter

[CascadingParameter]
public EditContext EditContext { get; set; }
我意识到存在一个
.Validate
方法,它验证
EditForm
的整个
模型

但我只想验证
模型
的一个字段

我可以从
EditForm
仅验证
模型的一个字段吗

如果你想知道我为什么想要这个。。。因为我正在制作一个自定义组件,当值更改并且它是一个有效值时,它将执行一些操作。

查看时,我发现如果要验证非复杂字段,只需创建一个
FieldIdentifier
并调用
EditContext.NotifyFieldChanged(FieldIdentifier)
,它将触发该字段验证

所以答案要简单得多:

// Get the FieldIdentifier with the EditContext from the field name
FieldIdentifier fieldIdentifier = EditContext.Field(fieldName);

// Validate the field when notifying change
EditContext.NotifyFieldChanged(fieldIdentifier);

// To check if the field is valid, 
// check if there is any error message. 
return !EditContext.GetValidationMessages(fieldIdentifier).Any();
在查看时,我发现如果要验证非复杂字段,只需创建
FieldIdentifier
并调用
EditContext.NotifyFieldChanged(FieldIdentifier)
,它就会触发该字段验证

所以答案要简单得多:

// Get the FieldIdentifier with the EditContext from the field name
FieldIdentifier fieldIdentifier = EditContext.Field(fieldName);

// Validate the field when notifying change
EditContext.NotifyFieldChanged(fieldIdentifier);

// To check if the field is valid, 
// check if there is any error message. 
return !EditContext.GetValidationMessages(fieldIdentifier).Any();

如果要保留修改后的状态,则需要进行反射。可以在不进行反射的情况下验证复杂对象?如果不想创建
FieldIdentifier
的新状态,还可以调用
EditContext.Field(string fieldName)
方法来获取
FieldIdentifier
。例如,您可以将其编写为
EditContext.NotifyFieldChanged(EditContext.Field(fieldName))如果要保留修改后的状态,则需要进行反射。可以在不进行反射的情况下验证复杂对象?如果不想创建
FieldIdentifier
的新存在,还可以调用
EditContext.Field(string fieldName)
方法来获取
FieldIdentifier
。例如,您可以将其编写为
EditContext.NotifyFieldChanged(EditContext.Field(fieldName))