在服务器端验证表单数据完好无损后,如何 return 到表单?

How can I return to the form after server side validation with form data intact?

我有这个验证规则来比较两个日期:

public class EmployeeAbsenceValidator : AbstractValidator<EmployeeAbsence>
{
    public EmployeeAbsenceValidator() {
        RuleFor(a => a.DateTo)
            .GreaterThanOrEqualTo(a => a.DateFrom);
    }
}

这是用于验证新创建的缺勤期的控制器代码:

if (ModelState.IsValid)
{
    EmployeeAbsenceValidator validator = new EmployeeAbsenceValidator();
    ValidationResult result = validator.Validate(employeeAbsence);
    if (!result.IsValid)
    {
        return RedirectToAction("Create", "EmployeeAbsences");
    }
    else
    {
        _context.Add(employeeAbsence);
        await _context.SaveChangesAsync();
        return RedirectToAction("Details", "Employees");
    }
}

如果日期无效,我想 return 将所有表单数据完好无损地添加到表单中。我该怎么做?

假设您的 GETPOST 操作方法的操作名称相同,然后使用 return this.View( model ),如下所示:

if (ModelState.IsValid)
{
    EmployeeAbsenceValidator validator = new EmployeeAbsenceValidator();
    ValidationResult result = validator.Validate(employeeAbsence);
    if (!result.IsValid)
    {
        return this.View( employeeAbsence );
    }
    else
    {
        _context.Add(employeeAbsence);
        await _context.SaveChangesAsync();
        return RedirectToAction("Details", "Employees");
    }
}

这会将 return 页面的 HTML 发送到 POST 请求,其中包含任何 @Html.ValidationMessageFor( m => m.Foo 帮助程序(或 <span asp-validator-for="Foo"> 帮助程序)中的验证错误消息。