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))代码>