【发布时间】:2022-11-02 02:42:58
【问题描述】:
在我的 Blazor Server App 项目中,我有一个 EditForm,其中包括我的 EditContext 和 OnValidSubmit 方法。
<EditForm EditContext="@EditContext" OnValidSubmit="@UpdateProject">
我声明并初始化我的 EditContext 如下:
private EditContext EditContext;
protected override async Task OnInitializedAsync()
{
EditContext = new(supplementedProjectModel);
}
和我的模型:
SupplementedProjectModel supplementedProjectModel = new();
当我使用提交按钮提交模型时
<button type="submit" class="btn button-primary">Spara</button>
它会触发 OnValidSubmit 事件,即使我的模型在我的模型包含的空输入中故意无效
[Required]
属性。为什么?
我的第二个问题是在 OnValidSubmit 方法中,EditContext.Validate() 总是返回 true。这是为什么?
protected async Task UpdateProject()
{
bool IsValid = EditContext.Validate();
EditContext = new(supplementedProjectModel);
bool isreallyvalid = EditContext.Validate();
if (IsValid)
{
// UPDATE MODEL
}
}
我已经尝试了所有这些注释验证器,并且在我运行项目并输入无效数据时清楚地看到了我的错误。
@*<ObjectGraphDataAnnotationsValidator />*@
<DataAnnotationsValidator />
<ValidationSummary />
在我的 UpdateProject 方法中,我的 EditContext 是否应该填充当前模型值?我会假设是这样,但找不到任何东西,因此我在再次初始化之前和之后测试了 Validate 方法。
谢谢阅读!
【问题讨论】: